Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tetiewastaken/advent-of-codeclub

High Seas advent calendar
https://github.com/tetiewastaken/advent-of-codeclub

advent hack-club high-seas vercel website

Last synced: 6 days ago
JSON representation

High Seas advent calendar

Awesome Lists containing this project

README

        

Built with ❤️ for High Seas 2024-2025

Advent of Codeclub is an advent calendar made for a (dutch!) coding club at school. It is built with Next.js, React, Tailwind CSS, and TypeScript. It uses Firebase for authentication and Firestore for the database.

## Pages and Features

### Main Page (/)
- Displays every day of the advent calendar up to the current day
- Shows whether the user has submitted a solution for the day
- Shows whether the solution was correct or not
- Shows the user's username in the top right corner
- An expanded view of the challenge can be opened by clicking on the challenge, which shows the full challenge description, the user's solution, if it was correct, and additionally a note from the admin


### Submit Page (/submit?id=)
- Allows the user to submit a solution for the selected challenge
- Submissions can be submitted as text or as a file (using Vercel glob), with an additional field for comments
- The user can only submit one solution per challenge
- The user can only submit solutions for challenges that have already been released

### Authentication Page (/auth)
- Allows the user to sign in by email and password
- Uses Firebase authentication to sign in and sign out, with email verification
- The user can only access any of the other pages when signed in
- If already signed in, the user can return or sign out




### Admin Page (/admin)
- Allows the admin to view all submissions for all challenges from all users
- The admin can view the user's solution, comments, and decide whether the solution was correct with an optional note
- The admin can also view the user's firebase ID, email, verification status, and dates of creation, last sign-in and last seen
- The admin page is only accessible to users with admin privileges, provided in the environment variables and uses JWT for authentication

## Building locally

To build the project locally, you need to have Deno installed. See the [Deno installation guide](https://docs.deno.com/runtime/getting_started/installation/) for more information.

1. Clone the repository
2. Set up the environment variables in a `.env` file in the root directory
You need to set the following environment variables:
- Vercel blob token
- Firebase API key and configuation
- Firebase service account key
- IDs of admin accounts (separated by commas)
- JWT secret key

3. Run `deno run dev` in the root directory
4. Open `http://localhost:3000` in your browser

All rights to brand logos belong to their respective owners. This project is not affiliated with any of the brands mentioned above.