A green skills gap intelligence platform built for the 24-hour hackathon.
- Frontend: Next.js 14 with App Router, React, TailwindCSS
- Backend: Netlify Functions (Next.js API routes)
- Authentication: Auth.js (NextAuth.js) with Google OAuth
- Database: Neon Postgres
- ORM: Drizzle ORM
- Install dependencies:
npm install-
Set up your environment variables:
- Copy
.env.exampleto.env.local - Add your Neon database URL
- Add your Google OAuth credentials
- Copy
-
Push the schema to your database:
npm run db:push- Run the development server:
npm run devOpen http://localhost:3000 to see the app.
The platform uses a simplified schema optimized for the hackathon:
- User - Authenticated users with Google SSO
- Account - Auth.js account linking
- Company - Tenant organizations
- Department - Organizational units
- Role - Job functions (skills loaded from role-defaults.json)
- Employee - People being assessed
- EmployeeSkillAssessment - Assessment results
- EmployeeXP - Gamification points
- DepartmentScore - Leaderboard scores
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run db:generate- Generate migrationsnpm run db:push- Push schema to databasenpm run db:studio- Open Drizzle Studio
agreend/
├── app/ # Next.js App Router
│ ├── api/ # API routes (auto-converted to Netlify Functions)
│ ├── dashboard/ # Dashboard pages
│ └── page.tsx # Landing page
├── components/ # React components
├── lib/
│ ├── db/ # Database schema and connection
│ └── data/ # Seeded data (skills.json, questions.json, role-defaults.json)
└── drizzle/ # Database migrations
- JWT sessions (no database session table)
- Skills stored in JSON files (no skill management UI)
- No RoleSkillRequirement table (calculated on-the-fly)
- Simplified RBAC (role stored on User)
- No invitation system (users create companies on first login)