A modern Next.js application for connecting nurses with career opportunities, featuring role-based access control, resume parsing, and job matching capabilities.
- Role-Based Access Control: Separate dashboards for Nurses and Admins
- User Authentication: Secure login, registration, and password management
- Resume Processing: Automatic parsing of PDF resumes using Mammoth and pdf-parse
- Job Matching: Intelligent job recommendations based on nurse profiles
- Profile Management: Complete nurse profiles with certifications, education, and experience
- Dashboard with job recommendations
- Profile management and settings
- Resume upload and parsing
- Skills and certifications tracking
- Job browsing and applications
- Admin dashboard with overview
- Nurse management system
- Job posting and management
- System monitoring and analytics
- Next.js 16.1.6 - React framework with App Router
- React 19.2.4 - UI library
- TypeScript - Type safety
- Tailwind CSS 4 - Styling
- Radix UI - Accessible component primitives
- Lucide React - Icon library
- NextAuth 4 - Authentication
- Supabase - Database and real-time features
- PostgreSQL - Database
- React Hook Form - Form management with Zod validation
- Resend - Email service
- Mammoth - PDF parsing for resumes
- pdf-parse - Additional PDF processing
- bcryptjs - Password hashing
- date-fns - Date manipulation
- Node.js 18+
- npm or yarn
- Supabase project
- Resend API key
-
Clone the repository
git clone https://github.com/Honeegee/NCP.git cd NCP -
Install dependencies
npm install # or yarn install -
Environment Variables Create a
.env.localfile in the root directory:# Supabase Configuration NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_service_role_key # NextAuth Configuration NEXTAUTH_URL=http://localhost:3000 NEXTAUTH_SECRET=your_nextauth_secret # Resend API Key RESEND_API_KEY=your_resend_api_key # Email Configuration FROM_EMAIL=noreply@yourdomain.com
-
Database Setup
- Run the Supabase migrations located in
supabase/migrations/ - Ensure your Supabase database is properly configured
- Run the Supabase migrations located in
-
Run the development server
npm run dev # or yarn dev -
Open http://localhost:3000 in your browser
src/
βββ app/ # Next.js App Router
β βββ (admin)/ # Admin dashboard routes
β βββ (auth)/ # Authentication routes
β βββ (nurse)/ # Nurse dashboard routes
β βββ api/ # API routes
β βββ globals.css # Global styles
βββ components/ # Reusable components
β βββ ui/ # Shadcn/ui components
β βββ shared/ # Shared components (Navbar, Footer)
β βββ profile/ # Profile management components
β βββ registration/ # Registration flow components
βββ lib/ # Utility libraries
β βββ auth.ts # Authentication configuration
β βββ supabase.ts # Supabase client
β βββ validators.ts # Zod validators
β βββ utils.ts # Utility functions
βββ types/ # TypeScript type definitions
# Development
npm run dev # Start development server with Turbopack
npm run dev:webpack # Start development server with Webpack
# Production
npm run build # Build for production
npm run start # Start production server
# Code Quality
npm run lint # Run ESLintThe application uses Supabase with the following main tables:
- nurses - Nurse profiles and credentials
- jobs - Job postings and requirements
- certifications - Nurse certifications
- education - Educational background
- experience - Work experience
- skills - Professional skills
- resumes - Resume documents
Refer to supabase/migrations/ for detailed schema definitions.
The application uses NextAuth.js with the following providers:
- Email/Password authentication
- Session management
- Role-based access control
- User registration with email verification
- Login with email/password
- Password reset functionality
- Session management with role-based routing
- Welcome emails for new users
- Password reset emails
- Account verification
- Job notifications (future enhancement)
- Tailwind CSS 4 for utility-first styling
- Radix UI for accessible components
- Custom CSS for global styles and themes
- Responsive design for all screen sizes
- Connect your repository to Vercel
- Configure environment variables
- Deploy automatically on push to main branch
- Netlify: Configure
next.config.tsand build settings - AWS Amplify: Set up build and deployment pipelines
- Docker: Use the provided build configuration
| Variable | Description | Required |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL | β |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous key | β |
SUPABASE_SERVICE_ROLE_KEY |
Supabase service role key | β |
NEXTAUTH_URL |
NextAuth URL | β |
NEXTAUTH_SECRET |
NextAuth secret | β |
RESEND_API_KEY |
Resend API key | β |
FROM_EMAIL |
Default from email | β |
- Password hashing with bcryptjs
- Input validation with Zod schemas
- CSRF protection via NextAuth
- Environment variable security
- Rate limiting (future enhancement)
- SQL injection protection via Supabase
- Built-in error tracking
- Performance monitoring
- User activity logging
- System health monitoring
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue in the GitHub repository
- Check the documentation in the
docs/folder - Review the Supabase migrations for database schema
- Real-time notifications
- Advanced job matching algorithms
- Mobile application
- Integration with nurse licensing boards
- Video interview scheduling
- Performance analytics dashboard
- Multi-language support
Built with β€οΈ using Next.js, Supabase, and modern web technologies.