The SHSSC Portal is a full-stack web application designed to manage the Senior High School Student Council's operations. Built with modern technologies, it provides features for event management, forums, voting, transparency, and more.
- Home Dashboard: Displays announcements, quick links, upcoming events, and satisfaction polls.
- Events System: Calendar view, event registration, and email reminders.
- Polls and Voting: Create polls, submit votes, and view results.
- Forums: Participate in discussions with real-time updates.
- Transparency: Financial summaries and resolutions.
- Live Q&A: Ask the council questions during live sessions.
- Admin Panel: Manage users, roles, committees, awards, and more.
- Framework: Next.js 14 with App Router and TypeScript.
- Styling: Tailwind CSS and shadcn/ui component library.
- Database: Supabase for authentication, storage, and real-time updates.
- State Management: Zustand.
- Forms: React Hook Form with Zod validation.
- Rich Text: TipTap editor.
- Email: Resend SDK for transactional emails.
- Analytics: Vercel Analytics.
- Node.js 20+
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone https://github.com/your-repo/shssc-portal.git
- Navigate to the project directory:
cd shssc-portal - Install dependencies:
npm install
Start the development server:
npm run devOpen http://localhost:3000 to view the application.
Create a .env.local file in the root directory and configure the following variables:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
RESEND_API_KEY=
NEXT_PUBLIC_SITE_URL=
Deploy the application on Vercel:
- Push your code to a GitHub repository.
- Connect the repository to Vercel.
- Set the environment variables in the Vercel dashboard.
shssc-portal/
├── app/
│ ├── (public)/
│ ├── (portal)/
│ ├── (profile)/
│ ├── (admin)/
│ ├── api/
│ └── layout.tsx
├── components/
├── hooks/
├── lib/
├── stores/
├── supabase/
├── types/
├── public/
├── middleware.ts
├── tailwind.config.ts
├── tsconfig.json
└── README.md
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Commit your changes:
git commit -m "Add your message" - Push to the branch:
git push origin feature/your-feature-name
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.