Skip to content

ScottyLabs/tartan-vote

Tartan Vote

Tartan Vote is a CMU Undergraduate Senate-commissioned, ScottyLabs-developed voting app, to help the Senate and other student organizations manage attendance and host elections and motions. Currently, the app is still under development, but we strongly hope to get it completed very soon!

Built With

  • Svelte
  • Rust
  • PostgreSQL
  • Better Auth

Assumptions about the reader

Hello, reader! For the remainder of this README, and other documentation, we will assume that you are a developer or contributor, using WSL or a Unix development system, and have some familiarity with the command line. If you need any help, you are free to contact one of the codeowners found in CODEOWNERS, or join the discord.

Photos

login page

join page

proxySetup page

waiting page page

host overview page

voting page

liveResults page

Getting Started

Prerequisites

  • devenv — provides Cargo, Deno, Node, PostgreSQL, and other tooling via Nix
  • direnv (recommended)

Quick Setup

For detailed setup instructions, see SETUP.md. Configuration and secrets are documented in secrets-and-config.md.

Authenticate once per machine with OpenBao so secretspec can read dev secrets:

export BAO_ADDR=https://secrets2.scottylabs.org
bao login -method=oidc

Allow direnv (or enter the shell manually):

direnv allow
# or: devenv shell

Run Better Auth migrations on first setup (or after auth schema changes):

cd auth-service && npm run migrate

Start all three dev processes:

devenv up
# or: devenv processes up

This starts the API (api), Better Auth service (auth), and Svelte frontend (frontend). Inside the devenv shell, constants, host URLs, DATABASE_URL, and secrets are provided automatically.

Deployment

Production runs on Kennel via devenv and secretspec.

  • Local: devenv up
  • Prod: push to Codeberg main; Kennel builds .#packages.x86_64-linux.{api,auth,frontend}

Deployment URLs follow Kennel's pattern:

  • API: tartan-vote-api-main.scottylabs.net (custom: api.tartan-vote.scottylabs.org)
  • Auth: tartan-vote-auth-main.scottylabs.net (custom: auth.tartan-vote.scottylabs.org)
  • Frontend: tartan-vote-frontend-main.scottylabs.net (custom: tartan-vote.scottylabs.org)

Kennel auto-provisions the Keycloak OIDC client on deploy when oidc.redirectPaths is set on the api service. See secrets-and-config.md for details.

Contributing

Please check CONTRIBUTING.md before you contribute to this project!

Licenses

Voting App is distributed under the Apache 2.0 and MIT Licenses, found in the files LICENSE-APACHE-2.0 and LICENSE-MIT respectively.

About

READ-ONLY MIRROR

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE-2.0
MIT
LICENSE-MIT

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors