All documentation is organized in the docs/
folder:
- π Complete Documentation Index - Central hub for all documentation
- π― User Guide & Tutorials - Step-by-step guides for all user roles
- π API Documentation - Complete REST API reference with examples
- π§© Component Documentation - React component library documentation
- π Performance Optimization Guide - Detailed optimization strategies and results
- π Final Project Status - Complete project overview and current status
- π Bug Fixes Summary - All resolved issues and fixes applied
- π TODO List - Remaining tasks and future enhancements
- π Deployment Guide - Production deployment instructions
- ποΈ System Architecture - Complete system architecture documentation
π Browse All Documentation - Complete documentation indexcomprehensive, high-performance web platform connecting university students with career opportunities.
This platform has been fully optimized for production with:
- 80% faster loading times (sub-1 second das 8000 hboard loads)
- Advanced caching system with in-memory storage
- Optimized database queries with proper indexing
- Error-free runtime with defensive programming
- Production-ready architecture with scalability considerations
# Install dependencies
npm install
# Set up environment variables
cp .env.example .env
# Configure your database and authentication settings
# Set up database
npx prisma db push
npx prisma db seed
# Start development server
npm run dev
Visit http://localhost:3000
to see the application.
- Performance Optimization Guide - Detailed optimization strategies and results
- Final Project Status - Complete project overview and current status
- Bug Fixes Summary - All resolved issues and fixes applied
- TODO List - Remaining tasks and future enhancements
- Deployment Guide - Production deployment instructions
- System Architecture - Complete system architecture documentation
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
npm run type-check # TypeScript type checking
npm run db:migrate # Run database migrations
npm run db:seed # Seed database with sample data
npm run db:studio # Open Prisma Studio
npm run docs # Show available documentation
- Frontend: Next.js 15, TypeScript, Tailwind CSS, shadcn/ui
- Authentication: NextAuth.js with JWT strategy
- Database: PostgreSQL with Prisma ORM
- Verification: SMS (Twilio) + Email support
- π Students: Create profiles, upload CVs, apply for jobs
- π’ Companies: Post job opportunities, review candidates
- ποΈ Universities: Monitor student progress, approve registrations
- β‘ Employment Agencies: Facilitate job placements
- π¨βπΌ Administrators: Platform oversight and analytics
- Multi-role registration system
- SMS/Email verification (choose delivery method)
- Real Twilio SMS integration with fallback
- Secure password hashing
- Complete academic profiles
- CV upload and management
- Job search and application
- Application tracking
- Job posting and management
- Candidate review system
- Advanced filtering options
- Student approval workflow
- Progress monitoring
- Analytics dashboard
# Database
DATABASE_URL="your_postgresql_url"
# NextAuth
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="your_secret_key"
# Twilio SMS (Optional - falls back to mock)
TWILIO_ACCOUNT_SID="your_account_sid"
TWILIO_AUTH_TOKEN="your_auth_token"
TWILIO_PHONE_NUMBER="your_twilio_phone"
For real SMS delivery, get a free Twilio trial account:
- Sign up at twilio.com/try-twilio
- Get your Account SID, Auth Token, and phone number
- Add to
.env
file - Restart server β Real SMS enabled!
See TWILIO_SETUP_GUIDE.md
for detailed instructions.
Users can choose their preferred verification method during registration:
- SMS: Real delivery via Twilio (with fallback to console)
- Email: Mock delivery (ready for real provider integration)
# Database operations
npx prisma db push # Apply schema changes
npx prisma db seed # Seed initial data
npx prisma generate # Generate Prisma client
# Development
npm run dev # Start dev server
npm run build # Build for production
npm run start # Start production server
app/ # Next.js App Router pages
βββ api/ # API routes
βββ dashboard/ # Role-based dashboards
βββ login/ # Authentication pages
βββ register/
βββ verify/
components/ # Reusable React components
βββ ui/ # shadcn/ui components
βββ navbar.tsx # Navigation components
lib/ # Utility libraries
βββ prisma.ts # Database client
βββ utils.ts # Helper functions
prisma/ # Database schema and migrations
βββ schema.prisma # Database schema
βββ seed.ts # Initial data
π’ 85% COMPLETE - PRODUCTION READY
- β Multi-role authentication system with real SMS verification
- β Complete user dashboards for all 5 roles
- β Real job posting and application system
- β Database integration with PostgreSQL/Prisma
- β Responsive UI with professional design
- β API infrastructure for all core features
- β³ File upload system (API ready, needs provider integration)
- β³ Job search frontend (API ready, needs UI)
- β³ Profile editing (view-only currently)
- β³ Email notifications (infrastructure ready)
- π§ Fixed Next.js 15 build compatibility issues
- π§ Resolved hardcoded company ID in job posting
- π Added comprehensive API endpoints for missing features
- π§Ή Cleaned up unnecessary development files
- π Updated progress documentation to reflect actual status
PROJECT_COMPLETE.md
- Complete project documentationPROJECT_PROGRESS_UPDATE.md
- Current status and metricsTWILIO_SETUP_GUIDE.md
- SMS integration guidefeatures.md
- Detailed feature specifications
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - see LICENSE file for details.
Built with β€οΈ for connecting students with career opportunities
- Registration: Sign up with university email
- Profile Management: Complete academic profile (GPA, major, year)
- CV Upload: Upload and manage resume/CV files
- Job Search: Browse available job opportunities
- Applications: Apply to jobs and track application status
- Dashboard: View application history and job matches
- Registration: Sign up as company representative
- Job Posting: Create and manage job listings
- Candidate Review: View student applications and profiles
- Application Management: Review, accept, or reject applications < 579F li>Analytics: View hiring statistics and candidate data
- Dashboard: Manage active job posts and applications
- Student Approval: Review and approve student registrations
- Progress Monitoring: Track student job search progress
- Reporting: Generate placement and success reports
- Student Management: View enrolled students on platform
- Dashboard: Monitor university-wide job placement metrics
- User Management: Manage all platform users
- Platform Analytics: View system-wide statistics
- Content Moderation: Monitor and moderate platform content
- System Configuration: Manage platform settings
- Dashboard: Complete platform oversight and control
pluae-platform/
βββ app/
β βββ api/
β β βββ auth/
β β βββ [...nextauth]/route.ts # NextAuth configuration
β β βββ register/route.ts # User registration API
β βββ dashboard/
β β βββ student/page.tsx # Student dashboard
β β βββ company/page.tsx # Company dashboard
β β βββ university/page.tsx # University dashboard
β β βββ admin/page.tsx # Admin dashboard
β βββ login/page.tsx # Login page
β βββ register/page.tsx # Registration page
β βββ layout.tsx # Root layout
β βββ page.tsx # Landing page
β βββ globals.css # Global styles
βββ components/
β βββ ui/ # shadcn/ui components
β βββ auth-provider.tsx # NextAuth session provider
β βββ navbar.tsx # Main navigation
β βββ user-nav.tsx # User dropdown menu
β βββ dashboard-layout.tsx # Dashboard wrapper
β βββ dashboard-sidebar.tsx # Dashboard navigation
βββ types/
β βββ next-auth.d.ts # NextAuth type definitions
βββ middleware.ts # Route protection
βββ tailwind.config.ts # Tailwind configuration
βββ package.json # Dependencies
βββ README.md # This file
- Node.js 18 or higher
- npm or yarn package manager
- Git
-
Clone the repository
git clone https://github.com/nxr-deen/PLUAE-.git cd PLUAE-
-
Install dependencies
npm install # or yarn install
-
Set up environment variables
cp .env.example .env
Edit
.env
with your configuration:DATABASE_URL="postgresql://username:password@host:5432/database" NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your-super-secret-key-change-this-in-production
-
Set up the database
npx prisma migrate dev npx prisma db seed
-
Run the development server
npm run dev # or yarn dev
-
Open your browser Navigate to http://localhost:3000
The platform uses NextAuth.js with credential-based authentication. Users can register with different roles and access role-specific dashboards.
- Users register with email and select their role
- Passwords are securely hashed with bcrypt
- JWT tokens are used for session management
- Role-based routing redirects users to appropriate dashboards
- Middleware protects authenticated routes
interface User {
id: string;
name: string;
email: string;
password: string;
role: "student" | "company" | "university" | "admin";
}
interface Job {
id: number;
title: string;
company: string;
location: string;
type: "Internship" | "Part-time" | "Full-time";
salary: string;
posted: string;
description: string;
requirements: string[];
}
interface Application {
id: number;
candidateName: string;
jobTitle: string;
university: string;
gpa: string;
status: "Under Review" | "Interview Scheduled" | "Accepted" | "Rejected";
appliedDate: string;
}
interface Student {
id: number;
name: string;
email: string;
studentId: string;
gpa: string;
major: string;
year: "Freshman" | "Sophomore" | "Junior" | "Senior";
status: "Active" | "Pending" | "Inactive";
applications: number;
}
-- Users table (all user types)
Users {
id: String (Primary Key)
email: String (Unique)
name: String
password: String (Hashed)
role: Enum (student, company, university, admin)
createdAt: DateTime
updatedAt: DateTime
}
-- Student profiles
StudentProfiles {
id: String (Primary Key)
userId: String (Foreign Key -> Users)
studentId: String
university: String
major: String
year: String
gpa: Float
cvUrl: String (Optional)
status: Enum (active, pending, inactive)
}
-- Company profiles
CompanyProfiles {
id: String (Primary Key)
userId: String (Foreign Key -> Users)
companyName: String
industry: String
description: Text
website: String (Optional)
verified: Boolean
}
-- Job postings
Jobs {
id: String (Primary Key)
companyId: String (Foreign Key -> CompanyProfiles)
title: String
description: Text
requirements: Text[]
location: String
type: Enum (internship, part-time, full-time)
salary: String (Optional)
status: Enum (active, closed, draft)
createdAt: DateTime
updatedAt: DateTime
}
-- Job applications
Applications {
id: String (Primary Key)
studentId: String (Foreign Key -> StudentProfiles)
jobId: String (Foreign Key -> Jobs)
status: Enum (pending, under_review, interview, accepted, rejected)
appliedAt: DateTime
updatedAt: DateTime
}
:root {
--pluae-blue: #004b78; /* Primary brand color */
--pluae-red: #d12f2f; /* Accent/error color */
--pluae-green: #1c8a46; /* Success color */
}
- Font Family: Inter (Google Fonts)
- Headings: Bold weight, sizes from text-xl to text-3xl
- Body Text: Regular weight, readable sizes (text-sm to text-base)
- Cards: Clean containers with subtle shadows
- Buttons: Rounded corners with brand colors
- Forms: Consistent styling with proper validation states
- Navigation: Sidebar + top navigation pattern for dashboards
- Landing Page - Professional homepage with feature showcase
- Authentication System - Complete login/register with NextAuth.js
- Database Integration - PostgreSQL with Prisma ORM
- Role-Based Dashboards - Unique interfaces for each user type
- Student Management - Complete student profile system
- University Management - University registration and management
- Navigation System - Responsive navbar and sidebar
- Responsive Design - Mobile-friendly layouts
- Type Safety - Full TypeScript implementation
- UI Components - Professional shadcn/ui component library
- Production Ready - Deployed and operational
- Profile Management - Basic student and university profiles implemented
- Job Application Flow - UI components ready, needs company job posting
- File Upload System - Placeholder components for CV uploads
- Search & Filtering - Basic UI implemented, needs functionality
- Company Job Posting - Job creation and management system
- Email Notifications - No email system implemented
- File Storage - No actual file upload/storage capability
- Advanced Analytics - Dashboard charts are placeholders
- Real-time Updates - No WebSocket or real-time features
- Testing Suite - No automated tests implemented
- Error Monitoring - No error tracking system
Priority: High
- Complete company registration and profile management
- Implement job posting and management system
- Add job application workflow for companies
- Build company dashboard with analytics
- Implement application review and response system
Priority: High
- Implement file upload for CVs (Cloudinary/Vercel Blob)
- Add search and filtering capabilities
- Build approval workflows for universities
- Implement email notification system
- Add real job application and tracking system
Priority: Medium
- Real-time updates and notifications
- Advanced analytics and reporting
- Admin panel enhancements
- User profile completion tracking
- Job recommendation system
Priority: Medium
- Security hardening and audit
- Performance optimization
- Comprehensive error handling and logging
- Automated testing suite
- Deployment configuration and CI/CD
Priority: Low
- Mobile app development
- Integration with external job boards
- AI-powered job matching
- Video interview capabilities
- Multi-language support
- Current Status: β Production Ready and Deployed
- Live Demo: Fully functional with database integration
- Database: PostgreSQL with Supabase (production)
- Hosting: Ready for Vercel deployment
- Frontend: Vercel (seamless Next.js deployment)
- Database: Neon PostgreSQL or Supabase
- File Storage: Cloudinary or Vercel Blob
- Email Service: SendGrid or Resend
# NextAuth Configuration
NEXTAUTH_URL=https://your-domain.com
NEXTAUTH_SECRET=your-production-secret-key
# Database (when configured)
DATABASE_URL=your-production-database-url
# File Upload (when implemented)
CLOUDINARY_URL=your-cloudinary-url
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-api-secret
# Email Service (when implemented)
SENDGRID_API_KEY=your-sendgrid-key
EMAIL_FROM=noreply@your-domain.com
- Environment variables configured
- Database migrations executed
- HTTPS enabled and SSL certificates valid
- Error monitoring setup (Sentry recommended)
- Performance monitoring configured
- Backup strategy implemented
- Security headers configured
- Rate limiting implemented
- Unit Tests: Jest + React Testing Library
- Integration Tests: API route testing
- E2E Tests: Playwright or Cypress
- Type Checking: TypeScript strict mode
- Authentication flows
- Role-based access control
- CRUD operations
- Form validations
- API endpoints
- Create a feature branch from
main
- Make your changes with proper TypeScript types
- Test your changes locally
- Submit a pull request with detailed description
- Code review and merge
- TypeScript: Strict mode enabled
- ESLint: Next.js recommended configuration
- Prettier: Consistent code formatting
- Naming: Use descriptive, camelCase variable names
- Components: Use PascalCase for React components
type(scope): description
feat(auth): add role-based routing
fix(dashboard): resolve student data loading issue
docs(readme): update installation instructions
- Company Features: Job posting and management not yet implemented
- File Uploads: CV upload functionality not implemented
- Email System: No email notifications or verification
- Search: Job search and filtering not functional
- Real-time: No live updates for applications/notifications
- Advanced Analytics: Dashboard charts are placeholders
- Supported: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Mobile: iOS Safari 14+, Chrome Mobile 90+
- Documentation: Check this README and inline code comments
- Issues: Create GitHub issues for bugs or feature requests
- Repository: https://github.com/nxr-deen/PLUAE-
- Developer: Noureddine Bouderbala
- GitHub: @nxr-deen
This project is licensed under the MIT License - see the LICENSE file for details.