A comprehensive web platform for the Women in Engineering (WiE) Academy, designed to support high school students pursuing engineering careers through community engagement, event management, achievement tracking, and educational resources.
WiE Academy provides a role-based system serving both students and administrators with features including:
- Community Forum: Real-time messaging and discussion forums for peer-to-peer and mentor connections
- Event Management: Browse, register for events, and track attendance with JWT-secured links
- Achievement System: Earn badges and XP through platform engagement
- Announcements: Targeted notifications and updates from academy administrators
- Progress Tracking: Analytics and reports on student activity and engagement
- Next.js 15 with App Router for server-side rendering
- React 19 for UI components
- TypeScript for type safety
- Tailwind CSS for styling
- Supabase for PostgreSQL database, authentication, and Row Level Security
- JWT tokens for secure attendance tracking
- Radix UI primitives for accessible components
- TipTap rich text editor for forum posts and announcements
- Framer Motion for animations
- Recharts for data visualization
If you do not have npm installed, download Node.js and npm from the official npm documentation.
-
Clone the repository:
git clone https://github.com/LennyPK/wie-academy.git cd wie-academy -
Install dependencies:
npm install
-
Copy the environment example file:
cp .env.example .env.local
-
Update the values in
.env.localwith your configuration:You will need to obtain the Supabase URL and keys from your Supabase project settings.
NEXT_PUBLIC_SITE_URL=http://localhost:3000 NEXT_PUBLIC_SUPABASE_URL=your-project-url NEXT_PUBLIC_SUPABASE_PUBLISHABLE_OR_ANON_KEY=your-anon-key EVENT_JWT_SECRET=your-secret-key
# Run development server with Turbopack
npm run dev
# Run tests
npm run test
# Run linting
npm run lint
# Format code
npm run formatThe application will be available at http://localhost:3000.
This project uses ShadCN. To add new components, use the ShadCN CLI:
npx shadcn@latest addThis project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
wie-academy/
├── app/ # Next.js App Router pages
│ ├── (protected)/ # Authentication-required routes
│ ├── auth/ # Login/register pages
│ └── api/ # API endpoints
├── components/ # React components
│ ├── ui/ # Reusable UI components
│ └── forum/ # Forum-specific components
├── lib/ # Shared utilities
│ ├── auth/ # Authentication helpers
│ ├── database/ # Database layer & schema
│ └── supabase/ # Supabase client factories
├── services/ # Business logic layer
└── data/ # Static data (avatars, schools, etc.)Two user roles with distinct permissions:
- Students: Can view content, create forum posts (when approved), register for events
- Admins: Full platform access including content creation, user management, and analytics
New users complete an onboarding that collects profile information and introduces platform features.
Events use JWT-embedded links for attendance marking without exposing event IDs, with automatic XP rewards upon successful check-in.
Forum posts and announcements support extensive formatting including bold, italic, lists, headings, links, images, and code blocks using TipTap.
Pre-commit hooks automatically run linting and formatting via Husky and lint-staged.
The project's PostgreSQL database skeleton is stored in /__schema__/. Instructions to restore the backup to a new Supabase project can be found on the Supabase docs.
This project was created by SOFTENG 761 2025 Team 6.