Frontend: - Replace Next.js with Vite + React + TypeScript - Add new component architecture (app-shell, sidebar, dashboard modules) - Implement product modules: FRAME, safety protocols, walkthrough checkin, campus/staff attendance, personality quiz, sign language, classroom timer - Add shadcn/ui component library with Tailwind CSS - Remove legacy generated components, stores, and pages Backend: - Add product migrations: frame_entries, user_progress, safety_quiz_results, walkthrough_checkins, communication_events, personality_quiz_results, campus_attendance_config/summaries, staff_attendance_records, content_catalog - Add corresponding models, services, and routes - Implement cookie-based auth with refresh token rotation - Add content catalog seeder with product content - Migrate to ESLint flat config - Switch from yarn to npm Infrastructure: - Update .gitignore for new tooling - Add project documentation (CLAUDE.md, docs/) - Remove deprecated config files and yarn.lock Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
School Chain Manager
This project was generated by Flatlogic Platform.
-
Frontend: React.js
-
Backend: NodeJS
Backend Folder Structure
The generated application has the following backend folder structure:
srcfolder which contains your working files that will be used later to create the build. The src folder contains folders as:-
auth- config the library for authentication and authorization; -
db- contains such folders as:-
api- documentation that is automatically generated by jsdoc or other tools; -
migrations- is a skeleton of the database or all the actions that users do with the database; -
models- what will represent the database for the backend; -
seeders- the entity that creates the data for the database.
-
-
routes- this folder would contain all the routes that you have created using Express Router and what they do would be exported from a Controller file; -
services- contains such folders asemailsandnotifications.
-
-
Database: PostgreSQL
-
app-shel: Core application framework that provides essential infrastructure services for the entire application.
We offer 2 ways how to start the project locally: by running Frontend and Backend or with Docker.
To start the project:
Backend:
Please change current folder:
cd backend
Install local dependencies:
yarn install
Adjust local db:
1. Install postgres:
MacOS:
brew install postgres
> if you don’t have ‘brew‘ please install it (https://brew.sh) and repeat step `brew install postgres`.
Ubuntu:
sudo apt update
sudo apt install postgresql postgresql-contrib
2. Create db and admin user:
Before run and test connection, make sure you have created a database as described in the above configuration. You can use the psql command to create a user and database.
psql postgres --u postgres
Next, type this command for creating a new user with password then give access for creating the database.
postgres-# CREATE ROLE admin WITH LOGIN PASSWORD 'admin_pass';
postgres-# ALTER ROLE admin CREATEDB;
Quit psql then log in again using the new user that previously created.
postgres-# \q
psql postgres -U admin
Type this command to creating a new database.
postgres=> CREATE DATABASE db_{your_project_name};
Then give that new user privileges to the new database then quit the psql.
postgres=> GRANT ALL PRIVILEGES ON DATABASE db_{your_project_name} TO admin;
postgres=> \q
Create database:
yarn db:create
Start production build:
yarn start
Frontend:
Please change current folder:
cd frontend
To start the project with Docker:
Description:
The project contains the docker folder and the Dockerfile.
The Dockerfile is used to Deploy the project to Google Cloud.
The docker folder contains a couple of helper scripts:
-
docker-compose.yml(all our services: web, backend, db are described here) -
start-backend.sh(starts backend, but only after the database) -
wait-for-it.sh(imported from https://github.com/vishnubob/wait-for-it)To avoid breaking the application, we recommend you don't edit the following files: everything that includes the docker folder and
Dokerfile.
Run services:
-
Install docker compose (https://docs.docker.com/compose/install/)
-
Move to
dockerfolder. All next steps should be done from this folder.cd docker -
Make executables from
wait-for-it.shandstart-backend.sh:chmod +x start-backend.sh && chmod +x wait-for-it.sh -
Download dependend projects for services.
-
Review the docker-compose.yml file. Make sure that all services have Dockerfiles. Only db service doesn't require a Dockerfile.
-
Make sure you have needed ports (see them in
ports) available on your local machine. -
Start services:
7.1. With an empty database
rm -rf data && docker-compose up7.2. With a stored (from previus runs) database data
docker-compose up -
Check http://localhost:3000
-
Stop services:
9.1. Just press
Ctr+C
Most common errors:
-
connection refusedThere could be many reasons, but the most common are:
-
The port is not open on the destination machine.
-
The port is open on the destination machine, but its backlog of pending connections is full.
-
A firewall between the client and server is blocking access (also check local firewalls).
After checking for firewalls and that the port is open, use telnet to connect to the IP/port to test connectivity. This removes any potential issues from your application.
MacOS:
If you suspect that your SSH service might be down, you can run this command to find out:
sudo service ssh status
If the command line returns a status of down, then you’ve likely found the reason behind your connectivity error.
Ubuntu:
Sometimes a connection refused error can also indicate that there is an IP address conflict on your network. You can search for possible IP conflicts by running:
arp-scan -I eth0 -l | grep <ipaddress>
arp-scan -I eth0 -l | grep <ipaddress>
and
arping <ipaddress>
-
yarn db:createcreates database with the assembled tables (on MacOS with Postgres database)The workaround - put the next commands to your Postgres database terminal:
DROP SCHEMA public CASCADE;CREATE SCHEMA public;GRANT ALL ON SCHEMA public TO postgres;GRANT ALL ON SCHEMA public TO public;Afterwards, continue to start your project in the backend directory by running:
yarn start