Welcome to DRAP: the Draft Ranking Automated Processor for the University of the Philippines Diliman - Department of Computer Science's yearly draft of research lab assignments. In a nutshell, this web application automates the mechanics of the draft:
The application is composed of two components: the main web application (SvelteKit) and a background email worker (TypeScript). Data persistence is backed by PostgreSQL.
Variable | Description |
---|---|
DATABASE_URL |
The connection string to the PostgreSQL instance. |
GOOGLE_OAUTH_CLIENT_ID |
OAuth 2.0 credentials retrieved from the [Google Cloud Console]. |
GOOGLE_OAUTH_CLIENT_SECRET |
OAuth 2.0 credentials retrieved from the [Google Cloud Console]. |
GOOGLE_OAUTH_REDIRECT_URI |
OAuth 2.0 credentials retrieved from the [Google Cloud Console]. |
# Install dependencies.
pnpm install
# Check formatting.
pnpm fmt # prettier
# Apply formatting auto-fix.
pnpm fmt:fix # prettier --write .
# Generate SvelteKit-specific typings.
pnpm --filter=drap-app sync
# Check linting rules.
pnpm lint:js
pnpm --filter=drap-app lint:html
pnpm --filter=drap-app lint:css
pnpm --filter=drap-app lint:svelte
# Perform all lints in parallel.
pnpm --parallel --recursive '/^lint:/'
# Run the Vite dev server for SvelteKit.
pnpm --filter=drap-app dev
# Run the Vite preview server for SvelteKit.
pnpm --filter=drap-app preview
# Run the SWC-backed runner for the TypeScript worker.
pnpm --filter=drap-email start
# Build the main web application (SvelteKit).
pnpm --filter=drap-app build
node --env-file=.env app/build/index.js
# Build the background email worker (TypeScript).
pnpm --filter=drap-email build
node --env-file=.env --enable-source-maps email/dist/main.js
# Build all applications in parallel.
pnpm --parallel --recursive build
The DRAP project, licensed under the GNU Affero General Public License v3, was originally developed by Sebastian Luis S. Ortiz and Victor Edwin E. Reyes as a service project under the UP Center for Student Innovations. The DRAP logo and banner were originally designed and created by Angelica Julianne A. Raborar.