A comprehensive, production-ready learning management system built with Next.js 15, TypeScript, and modern web technologies. CODAC provides a complete educational platform with advanced content management, community features, and career services.
- Course Management: Create and organize multi-module courses with lessons and projects
- Progress Tracking: Monitor student progress through comprehensive analytics
- Enrollment System: Flexible enrollment management with role-based access
- Quiz System: Interactive quizzes with multiple difficulty levels and automated scoring
- Unified Editor: Plate.js-powered rich text editor with auto-save functionality
- Media Support: Image, video, and file upload integration via Supabase Storage
- Collaborative Features: Real-time editing with comments and suggestions
- Export Options: Multiple format exports including Markdown and DOCX
- Student Cohorts: Organize learners into cohorts with dedicated spaces
- Mentorship Program: Connect students with mentors and schedule sessions
- Discussion System: Built-in commenting and discussion features
- User Profiles: Comprehensive user profiles with avatar management
- Job Board: Integrated job posting and application system
- Career Tracking: Monitor job applications and career progress
- Resume Builder: Tools for creating and managing professional profiles
- Networking: Connect with alumni and industry professionals
- NextAuth.js Integration: Secure authentication with multiple providers (Google, GitHub)
- Role-Based Access: Granular permissions for STUDENT, MENTOR, ADMIN, ALUMNI roles
- Data Protection: Comprehensive validation using Zod schemas
- Session Management: Secure session handling with proper token management
- Next.js 15 - React framework with App Router and Server Components
- TypeScript 5 - Type-safe JavaScript with strict mode enabled
- React 19 - Latest React with concurrent features
- PostgreSQL 13+ - Robust relational database
- Prisma 6.9 - Type-safe database client and ORM
- NextAuth.js v5 - Comprehensive authentication solution
- Server Actions - Modern data mutations without API routes
- Tailwind CSS 4 - Utility-first CSS framework
- Shadcn/UI - High-quality component library
- Radix UI - Low-level UI primitives
- Lucide Icons - Beautiful open-source icons
- Plate.js 49 - Rich text editor with plugins
- Supabase Storage - File upload and management
- Auto-save System - Real-time content persistence
- Media Support - Images, videos, and documents
- Vitest - Fast unit testing framework
- React Testing Library - Component testing utilities
- Playwright - End-to-end testing framework
- ESLint 9 - Code linting and formatting
- Zod - Schema validation and type inference
- pnpm - Fast, efficient package manager
- Vercel AI SDK - AI integration toolkit
- OpenAI API - AI-powered features and content generation
- Resend - Transactional email service
- Node.js 18+
- pnpm 8+ (package manager)
- Git
- PostgreSQL 13+ (database server)
# Clone the repository
git clone <repository-url>
cd codac-25
# Run automated setup
pnpm setup# Install dependencies
pnpm install
# Setup environment
cp env.template .env
# Generate Prisma client and setup database
pnpm db:generate
pnpm db:push
pnpm db:seed
# Start development server
pnpm dev# Development
pnpm dev # Start dev server with Turbopack
pnpm dev:safe # Setup + dev (recommended for first run)
# Building
pnpm build # Create production build
pnpm start # Start production server
# Database
pnpm db:generate # Generate Prisma client
pnpm db:push # Push schema to database
pnpm db:seed # Seed database with sample data
pnpm db:studio # Open Prisma Studio
pnpm db:reset # Reset database with fresh data
# Code Quality & Testing
pnpm lint # Run ESLint
pnpm lint:fix # Fix ESLint issues
pnpm ts:check # TypeScript type checking
pnpm test:unit # Run unit tests (Vitest)
pnpm test:unit:watch # Run unit tests in watch mode
pnpm test:unit:ui # Interactive unit test debugging
pnpm test # Run Playwright E2E tests
pnpm test:ui # Run E2E tests with interactive UI
pnpm test:headed # Run E2E tests in headed browser mode
# Content Management
pnpm import:lms # Import LMS content from markdown
pnpm export:docs # Export documents to markdowncodac-25/
βββ app/ # Next.js app router pages
β βββ auth/ # Authentication pages
β βββ docs/ # Document management
β βββ lms/ # Learning management system
β βββ community/ # Community features
β βββ career/ # Career center
β βββ api/ # API routes
βββ components/ # React components
β βββ ui/ # Reusable UI components
β βββ editor/ # Rich text editor components
β βββ auth/ # Authentication components
β βββ [feature]/ # Feature-specific components
βββ lib/ # Utility libraries
βββ actions/ # Server actions
βββ data/ # Data access layer
βββ hooks/ # Custom React hooks
βββ types/ # TypeScript type definitions
βββ tests/ # Test utilities and configuration
βββ prisma/ # Database schema and migrations
- Role-based access control (STUDENT, MENTOR, ADMIN, ALUMNI)
- Protected routes with middleware
- Secure server actions with permission checks
- PostgreSQL with Prisma ORM for development
- Comprehensive schema covering users, courses, documents, and community features
- Efficient queries with proper indexing and relations
CODAC includes comprehensive testing infrastructure to ensure reliability and code quality.
- Vitest: Fast unit testing with TypeScript support
- React Testing Library: Component testing utilities
- Playwright: End-to-end testing with cross-browser support
- ESLint: Code linting with Next.js and TypeScript rules
- Unit Tests: Functions, components, and server actions (
*.test.ts/tsx) - Integration Tests: Multi-component workflows and forms
- E2E Tests: Complete user journeys and accessibility (
tests/e2e/)
# Unit Tests
pnpm test:unit # Run all unit tests
pnpm test:unit:watch # Watch mode for development
# E2E Tests
pnpm test # Run Playwright E2E tests
pnpm test:ui # Interactive E2E debugging
# Coverage & Reports
pnpm test:unit:coverage # Unit test coverage
pnpm test:report # E2E test reports- Code Quality: Always run
pnpm lintandpnpm ts:checkbefore committing - Unit Testing: Write tests for new components and functions (
pnpm test:unit:watch) - Database Updates: Use
pnpm db:generateafter schema changes - Testing: Run relevant tests for your changes
- Build Verification: Use
pnpm buildto ensure production compatibility
Create a .env file in the root directory with the following variables:
# PostgreSQL Connection (Required)
DATABASE_URL=# NextAuth Configuration (Required)
AUTH_SECRET="your-very-secure-secret-key-minimum-32-characters"
AUTH_URL="http://localhost:3000"
# Google OAuth (Required for full functionality)
AUTH_GOOGLE_ID="your-google-oauth-client-id"
AUTH_GOOGLE_SECRET="your-google-oauth-client-secret"
# Email Provider (Required for magic links)
AUTH_RESEND_KEY="re_your-resend-api-key"
EMAIL_FROM="[email protected]"We welcome contributions to CODAC! Please follow these steps:
- Fork & Clone: Fork the repository and clone your fork
- Branch: Create a feature branch (
git checkout -b feature/amazing-feature) - Develop: Make your changes following the project conventions
- Quality Checks: Run
pnpm lint,pnpm ts:check, and relevant tests - Commit: Use conventional commit messages
- Push: Push to your branch (
git push origin feature/amazing-feature) - Pull Request: Open a PR with a clear description of changes
This project is licensed under the MIT License. See the LICENSE file for details.