Getting Started
This walks through setting up the DeSIC Platform on a local machine, from cloning the repositories to running the frontend against a local database. Follow the steps in order the first time; after that, most steps only need repeating when something changes (a new dependency, a schema migration, and so on).
Prerequisites
- Required tools
- Optional accounts
- Node.js 18 or later
- npm or yarn
- PostgreSQL 14 or later
- Git
- A Vercel account, if you want to mirror the production frontend hosting
- A Render account, if you want to mirror the production backend hosting
Setup steps
Clone the repositories
Clone the frontend and backend repositories to your machine. The project is split into a React client and an Express API, developed and deployed independently.
Install dependencies
Run npm install (or yarn) inside each project directory to pull in the frontend and backend dependencies separately.
Provision PostgreSQL
Create a local database and note its connection string. The backend expects referential integrity to be enforced at the database layer, so running the provided migrations is required, not optional.
Configure environment variables
Copy the example environment file in the backend to .env and fill in the database connection string, a JWT signing secret, and any notification provider credentials you plan to test against.
Run database migrations
Apply the schema migrations so the core entities — users, applications, events, mentor assignments, progress logs, and notifications — exist in your local database.
Start the backend
Start the Express API in development mode. Confirm it is reachable before starting the frontend, since the client expects a live API URL.
Start the frontend
Point the React app's API base URL at your local backend and start the development server. Log in as a seeded administrator to confirm the connection end to end.
Example commands
# Backend
cd desic-backend
npm install
cp .env.example .env # then edit .env with your local values
npm run migrate
npm run dev
# Frontend, in a second terminal
cd desic-frontend
npm install
npm run dev
At minimum, the backend requires a database connection string and a JWT secret. Notification-related variables are only required if you're testing the email or SMS channels locally.
Where to go next
- System Architecture to understand how the pieces fit together.
- Functional Requirements for a tour of what each role can do.
- Deployment Guide for how the hosted environments are configured.