| | 1 | = Build Instructions = |
| | 2 | |
| | 3 | == Development environment == |
| | 4 | |
| | 5 | * Node.js 20+ and npm |
| | 6 | * PostgreSQL client (psql) for running the SQL scripts |
| | 7 | * SSH access to the faculty database server (credentials in EPRMS → Databases) |
| | 8 | * Operating system: macOS / Linux / Windows |
| | 9 | |
| | 10 | == Required software == |
| | 11 | |
| | 12 | * Node.js and npm (frontend + backend) |
| | 13 | * An SSH client (built into macOS/Linux; on Windows use OpenSSH or PuTTY) |
| | 14 | |
| | 15 | == Build instructions == |
| | 16 | |
| | 17 | 1. Install dependencies: |
| | 18 | {{{ |
| | 19 | cd server && npm install |
| | 20 | cd ../client && npm install |
| | 21 | }}} |
| | 22 | 2. Create `server/.env` with the faculty database connection (values from EPRMS → Databases): |
| | 23 | {{{ |
| | 24 | DATABASE_URL="postgresql://<DB_USER>:<DB_PASSWORD>@localhost:5433/<DB_NAME>?schema=project" |
| | 25 | SSH_HOST=<SSH_HOST> |
| | 26 | SSH_USER=<SSH_USER> |
| | 27 | SSH_PASSWORD=<SSH_PASSWORD> |
| | 28 | }}} |
| | 29 | 3. Generate the Prisma client: |
| | 30 | {{{ |
| | 31 | cd server && npx prisma generate |
| | 32 | }}} |
| | 33 | 4. (First time only) create the schema and load sample data through the tunnel: |
| | 34 | {{{ |
| | 35 | psql "<connection string>" -f database/schema_creation.sql |
| | 36 | psql "<connection string>" -f database/data_load.sql |
| | 37 | }}} |
| | 38 | |
| | 39 | == Testing instructions == |
| | 40 | |
| | 41 | 1. Open the SSH tunnel to the faculty database (keep this terminal open): |
| | 42 | {{{ |
| | 43 | ./tunnel.sh |
| | 44 | }}} |
| | 45 | The tunnel forwards local port 5433 to the faculty database's PostgreSQL port. |
| | 46 | 2. Start the backend (second terminal): |
| | 47 | {{{ |
| | 48 | cd server && npm run dev |
| | 49 | }}} |
| | 50 | 3. Start the frontend (third terminal): |
| | 51 | {{{ |
| | 52 | cd client && npm run dev |
| | 53 | }}} |
| | 54 | 4. Open the application at '''http://localhost:5174''' |
| | 55 | |
| | 56 | == Demo login == |
| | 57 | |
| | 58 | * '''Admin:''' admin@ecore.mk / demo1234 |
| | 59 | * The Admin account can create and assign tasks, and issue invoices. |
| | 60 | * Client and Worker accounts are also seeded in project.users to demonstrate the client-view and worker flows. |
| | 61 | |
| | 62 | == Main features to test == |
| | 63 | |
| | 64 | * '''Create + assign a task (UC0001):''' Tasks → New Task → choose client, project, worker → Add Task. |
| | 65 | * '''Client project view (UC0002):''' log in as a client to see their own projects and task status. |
| | 66 | * '''Issue an invoice (UC0003):''' Invoices → pick a client, add line items → the system computes subtotal, tax, and total. |