A full-stack mentorship platform built with NestJS, React, and PostgreSQL for configuring and managing mentorship programs with dynamic application forms.
- Google OAuth Authentication - Secure login with Google accounts
- Role-based Access Control - Admin/user permissions system
- Program Display - View available mentorship programs
- Framework: NestJS
- Database: PostgreSQL
- ORM: Prisma
- Authentication: Google OAuth 2.0
- JWT: Token-based authentication
- Framework: React with TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Routing: React Router DOM
- OAuth: @react-oauth/google
- Basic authentication system
- Google OAuth integration
- User management with Prisma
- Basic UI components and layout
- Environment configuration
- Dynamic form engine
- Program configuration system
- Enrollment workflow
- Admin dashboard
- Advanced form validation
- Audit logging
mentorgain-program-engine/
├── backend/ # NestJS backend
│ ├── src/
│ │ ├── auth/ # Authentication module
│ │ ├── users/ # User management
│ │ ├── prisma/ # Database schema
│ │ └── main.ts # Entry point
│ ├── package.json
│ └── prisma/
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Route components
│ │ ├── lib/ # Utilities
│ │ └── main.tsx # Entry point
│ ├── package.json
│ └── tailwind.config.js
└── README.md
DATABASE_URL="postgresql://user:password@localhost:5432/mentorgain"
JWT_SECRET="your-jwt-secret"
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"VITE_GOOGLE_CLIENT_ID="your-google-client-id"
VITE_API_URL="http://localhost:3000"- Node.js 18+
- PostgreSQL
- Bun (recommended) or npm
cd backend
bun install
npx prisma migrate dev
bun run start:devcd frontend
bun install
bun run dev- id - UUID primary key
- email - Unique email address
- name - User's display name
- googleId - Unique Google ID
- role - UserRole enum (USER, ADMIN, SUPER_ADMIN)
- createdAt - Timestamp
- 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