A collaborative platform where educators, students, and professionals share knowledge through courses, tutorials, and study materials. Users can create content, engage with others' materials, track their learning progress, and discover new topics based on their interests.
Think: Udemy (course structure) + Medium (content sharing) + Reddit (community engagement)
- π Browse and enroll in courses with structured learning paths
- π Track progress with completion percentages and learning streaks
- π¬ Engage through comments, ratings, and discussions
- π Earn achievements and badges for milestones
- π Bookmark content for later reference
- π Discover personalized recommendations
- π± Clean, accessible UI with dark mode support
- βοΈ Create courses with modules and lessons
- π Publish tutorials and study materials
- π View analytics (enrollments, completions, engagement)
- π‘ Respond to learner questions
- π₯ Build a following and community
- π Secure authentication with JWT
- β‘ Real-time updates for comments and notifications
- π¨ Beautiful UI with Radix UI and Tailwind CSS
- π GraphQL API for efficient data fetching
- π± Responsive design for all devices
- βΏ Accessibility-first with WCAG compliance
- Framework: Spring Boot 3.2+ (Java 21)
- API: GraphQL (Spring for GraphQL)
- Database: PostgreSQL 15+
- ORM: Spring Data JPA
- Security: Spring Security + JWT
- Build Tool: Maven
- Framework: React 19 with TypeScript
- Build Tool: Vite 7+
- GraphQL Client: Apollo Client 3.11+
- UI Components: Radix UI (unstyled primitives)
- Styling: Tailwind CSS 4+
- Routing: React Router v6
- Forms: React Hook Form + Zod
- Icons: Lucide React
- Primary: PostgreSQL 15+
- Features: Full-text search, JSONB, triggers, indexes
Social Learning Platform/
βββ .agent/ # π Comprehensive documentation
β βββ database/
β β βββ schema.md # Complete database schema
β βββ graphql/
β β βββ schema.graphql # GraphQL API definition
β βββ backend/
β β βββ architecture.md # Backend architecture guide
β βββ frontend/
β β βββ architecture.md # Frontend architecture guide
β βββ learning/
β β βββ comprehensive-guide.md # Learning resources
β βββ implementation-plan.md # Phase-by-phase roadmap
β βββ quick-reference.md # Commands & snippets
β βββ README.md # Documentation index
β
βββ backend/ # Spring Boot application
β βββ src/
β β βββ main/
β β β βββ java/com/sociallearning/
β β β β βββ entity/ # JPA entities
β β β β βββ repository/ # Data access layer
β β β β βββ service/ # Business logic
β β β β βββ graphql/ # GraphQL resolvers
β β β β βββ security/ # Authentication & authorization
β β β β βββ config/ # Configuration classes
β β β βββ resources/
β β β βββ application.yml
β β β βββ graphql/schema.graphqls
β β βββ test/
β βββ pom.xml
β
βββ frontend/ # React application
β βββ src/
β β βββ components/
β β β βββ ui/ # Radix UI base components
β β β βββ features/ # Feature-specific components
β β β βββ layout/ # Layout components
β β β βββ common/ # Common utilities
β β βββ pages/ # Page components (routes)
β β βββ graphql/ # GraphQL queries/mutations
β β βββ hooks/ # Custom React hooks
β β βββ context/ # React Context providers
β β βββ types/ # TypeScript types
β β βββ utils/ # Utility functions
β β βββ styles/ # Global styles
β βββ public/
β βββ package.json
β βββ vite.config.ts
β βββ tailwind.config.js
β
βββ README.md # This file
- Java 21+ (JDK)
- Node.js 18+ and npm
- PostgreSQL 15+
- Maven 3.8+
- Git
git clone <repository-url>
cd "Social Learning Platform"# Create PostgreSQL database
psql -U postgres
CREATE DATABASE sociallearning;
\qcd backend
# Copy example config
cp src/main/resources/application-example.yml src/main/resources/application.yml
# Update database credentials in application.yml
# Update JWT secret key
# Run backend
./mvnw spring-boot:runBackend will start at: http://localhost:8080
- GraphQL endpoint: http://localhost:8080/graphql
- GraphiQL interface: http://localhost:8080/graphiql
cd frontend
# Install dependencies
npm install
# Copy example env
cp .env.example .env.local
# Update API endpoints in .env.local
# Start dev server
npm run devFrontend will start at: http://localhost:5173
cd backend
./mvnw test # Run all tests
./mvnw test -Dtest=CourseServiceTest # Run specific testcd frontend
npm test # Run tests
npm test -- --coverage # With coveragecd backend
./mvnw clean package
java -jar target/social-learning-platform-0.0.1-SNAPSHOT.jarcd frontend
npm run build
# Output in dist/ folderThis is a learning project. Contributions, issues, and feature requests are welcome!
- Create a feature branch
- Follow the architecture documented in
.agent/ - Write tests for new features
- Submit a pull request
- JWT-based authentication
- Password hashing with BCrypt
- Input validation and sanitization
- SQL injection prevention
- XSS protection
- CORS configuration
- Rate limiting (production)
Quick fixes:
# Backend: Port already in use
netstat -ano | findstr :8080
taskkill /PID <PID> /F
# Frontend: Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install
# Database: Reset database
psql -U postgres
DROP DATABASE sociallearning;
CREATE DATABASE sociallearning;- Spring Boot team for excellent framework
- GraphQL Foundation for the query language
- Radix UI for accessible primitives
- Tailwind Labs for amazing CSS framework
- Apollo team for GraphQL client
- React team for the UI library
For questions or feedback about this project, please open an issue on GitHub.
Happy Learning! π