Skip to main content

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

  • Node.js 18 or later
  • npm or yarn
  • PostgreSQL 14 or later
  • Git

Setup steps

1

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.

2

Install dependencies

Run npm install (or yarn) inside each project directory to pull in the frontend and backend dependencies separately.

3

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.

4

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.

5

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.

6

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.

7

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
Environment variables

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