A secure, reactive document sharing and approval workflow application built using a Go (Echo) backend, an Angular frontend, and a PostgreSQL database.
- Frontend: Angular 17+ with Tailwind CSS (Light Office Theme & Micro-animations) running on port
4200. - Backend: Go 1.26+ (Echo Framework + GORM + JWT Auth) running on port
8080. - Database: PostgreSQL (Auto-migrations & Seeding via GORM) running on port
5432.
The application requires a PostgreSQL instance running locally.
Make sure PostgreSQL is installed and running on your machine:
-
Windows: Verify that the PostgreSQL service (e.g.,
postgresql-x64-18) is running. -
Mac/Linux: Install via Homebrew/APT and start the service:
brew services start postgresql # or sudo systemctl start postgresql
-
Open your terminal or Command Prompt.
-
Run
createdbusing the defaultpostgressuperuser (enter the database password when prompted):createdb -U postgres office_files
(Note: The default password configured in the app is
postgres. If your credentials differ, set theDATABASE_URLenvironment variable.)
The backend is built as a modular monolithic API server using the Echo framework and GORM, running on port 8080.
- Go 1.26 or higher.
By default, the backend connects using the database credentials defined in the .env file located in the backend folder:
DATABASE_URL="host=localhost user=postgres password=postgres dbname=office_files port=5432 sslmode=disable"To update database credentials, open the backend/.env file and edit the DATABASE_URL parameter directly.
-
Navigate to the
backenddirectory:cd backend -
Start the API monolithic server:
go run cmd/api/main.go
The backend API will be available at
http://localhost:8080.
If you need to reset the database and seed the default SuperAdmin credentials, navigate to the backend folder and run:
go run cmd/seed/main.goThis will clear all tables (except the SuperAdmin user) and seed the default administrator credentials:
- Email:
superadmin@school.edu - Password:
password
To run backend unit tests:
go test -v ./...The Angular frontend provides dashboard controls for document actions, tracking logs, and a PDF viewer.
- Node.js v20+ and npm.
- If Node.js is not on your system path, you can run commands pointing directly to your Node path.
-
Navigate to the
frontenddirectory:cd frontend -
Install the package dependencies:
npm install
-
Start the Angular local development server:
npm start
-
Open your browser and navigate to http://localhost:4200.
- Receipts (Inward Documents) & Files (Noting Sheets):
- Dual-mode workflow workspace supporting standard inward receipts and official file noting sheets.
- Noting Sheet Collaboration (Green & Yellow Notes):
- Yellow Notes (Drafts): Collaborative, editable draft notes that can be edited by the author or finalized.
- Green Notes (Official): Permanent, un-editable official notes stamped with electronic signatures.
- Point of Contact (PoC) Sibling & Parent Routing:
- Administrative point-of-contacts can forward files up to parent organizations or across to sibling organizations.
- Role-based boundaries restrict standard staff visibility to their own organization while admins serve as gateway points of contact.
- Document Actions: Approve, Reject, and Send Back for Revision.
- Resubmit or Replace:
- Uploaders can replace a document that was sent back.
- Alternatively, they can resubmit with comments without modifying the original file.
- Workflow Timeline: Complete action tracking shown chronologically on a vertical history timeline.
- Document Previews (PDF & DOCX):
- Embeds an inline browser-native PDF viewer dynamically using
DomSanitizerinside the document details page. - Embeds a client-side DOCX document viewer using the
docx-previewlibrary.
- Embeds an inline browser-native PDF viewer dynamically using
- Action Stamp Tokens: Generates and overlays a secure, verifiable transaction token (e.g.
SIG-TX-XXXX) automatically when an action (Approve/Reject) is completed. - Separate Admin Panel: A centralized, secure console for school administrators allowing:
- System stats oversight (users, documents).
- CRUD management for users and class settings.
- CRUD management for document categories and workflow rules.
- School settings adjustments.