Skip to content

Latest commit

 

History

87 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WiE Academy Platform

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.

Overview

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

Technology Stack

Core Framework

  • Next.js 15 with App Router for server-side rendering
  • React 19 for UI components
  • TypeScript for type safety
  • Tailwind CSS for styling

Backend & Database

  • Supabase for PostgreSQL database, authentication, and Row Level Security
  • JWT tokens for secure attendance tracking

UI Components

  • Radix UI primitives for accessible components
  • TipTap rich text editor for forum posts and announcements
  • Framer Motion for animations
  • Recharts for data visualization

Getting Started

Prerequisites

If you do not have npm installed, download Node.js and npm from the official npm documentation.

Installation

  1. Clone the repository:

    git clone https://github.com/LennyPK/wie-academy.git
    cd wie-academy
  2. Install dependencies:

    npm install

Environment Setup

  1. Copy the environment example file:

    cp .env.example .env.local
  2. Update the values in .env.local with 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

Development

# Run development server with Turbopack
npm run dev

# Run tests
npm run test

# Run linting
npm run lint

# Format code
npm run format

The application will be available at http://localhost:3000.

Additional Tools

ShadCN

This project uses ShadCN. To add new components, use the ShadCN CLI:

npx shadcn@latest add

Fonts

This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.

Project Structure

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.)

Key Features

Role-Based Access Control

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

Onboarding Flow

New users complete an onboarding that collects profile information and introduces platform features.

Secure Attendance Tracking

Events use JWT-embedded links for attendance marking without exposing event IDs, with automatic XP rewards upon successful check-in.

Rich Content Editor

Forum posts and announcements support extensive formatting including bold, italic, lists, headings, links, images, and code blocks using TipTap.

Code Quality

Pre-commit hooks automatically run linting and formatting via Husky and lint-staged.

Database Recovery

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.

Contributors

This project was created by SOFTENG 761 2025 Team 6.

About

A Next.js web platform for the Women in Engineering Academy that empowers high school students through community forums, event management, gamified achievements, and mentorship connections.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages