A lightweight yet robust event point tracking system, built around college clubs. Made for the Southern New Hampshire University Student Government Association for their Penmen Pride program.
It utilizes Apple Wallet & Google Wallet mobile passes with unique QR codes to enable students to earn points for attending events.
Penpoint is built with the Svelte 5, utilizing remote functions for a typesafe API.
Penpoint was made with ease of setup in mind. Svelte, the framework used for this site, combines the website and backend, so you'll only have to setup the website, and then the database.
Caution
The setup guide is a work in progress, as is Penpoint.
- Git
- Node.js 20.0.0 or higher
- Docker/Docker engine installed and running
- Apple Developer Account (for Apple Wallet)
- Google Developer Account (for Google Wallet)
- Some bluetooth/usb scanner for scanning QR codes (optional, but recommended)
- Bun (optional, but recommended)
- Clone the repository to your local machine.
git clone https://github.com/averwhy/Penpoint.git
- Navigate to the project directory.
cd Penpoint
- Install the dependencies.
bun install
- Rename the
.env.examplefile to.envand fill in the required environment variables.
Warning
For production, use a cryptographically secure 64-character string for the three JWT secrets. You can generate one using the following command: openssl rand -base64 48.
Store these secrets securely, as they are used to sign and verify JWT tokens for authentication.
- Spin up the database using Docker.
Tip
Add the -d flag to the end of the below command to run the database in detached mode, allowing you to continue using the terminal for other commands. If you don't, note that if you close that terminal the database will stop.
docker compose up
The database will be created automatically and filled with the necessary tables.
- Build the site.
bun run build
- Start the site.
bun run start