-
Notifications
You must be signed in to change notification settings - Fork 20
Home
UTD Notebook helps students find, share, save, rate, and report course notes. This wiki explains how the project works and how to make changes without getting lost in the codebase.
- Getting started walks through a complete local setup.
- Project architecture explains how a request moves through the app, server, database, and storage service.
- Project structure shows where each kind of code belongs.
- How to contribute covers branches, checks, commits, pull requests, and review expectations.
Most requests begin in a small Next.js entrypoint. The entrypoint hands the work to a feature system, and that system uses shared project code or the server when it needs them.
flowchart LR
Browser[Browser] --> App[src/app routes]
App --> Systems[src/systems features]
Systems --> Lib[src/lib shared code]
App --> Server[src/server backend]
Systems --> Server
Lib --> Nebula[Nebula Library]
Server --> Database[(PostgreSQL)]
Server --> Storage[Nebula API storage]
The important idea is that src/app names routes but does not own feature
behavior. Search behavior belongs to the search system, note behavior belongs
to the notes system, and reusable pieces belong in src/lib.
| System | What you will find there |
|---|---|
account |
Sign in, onboarding, profiles, and settings |
moderation |
Reports and administrative review screens |
notes |
Note pages, uploads, editing, saving, ratings, and PDFs |
search |
Search UI, autocomplete handlers, datasets, and generators |
Install Git and Node.js 22. You can confirm the active versions with:
git --version
node --version
npm --versiongit clone https://github.com/UTDNebula/utd-notebook.git --recurse-submodules
cd utd-notebookIf you already cloned the project without the submodule, run:
git submodule update --init --recursiveUse the committed lockfile so everyone gets the same dependency versions:
npm ciCopy the example file, then fill in the private values through an authorized project channel:
cp .env.example .envNever paste real credentials into chat, issues, screenshots, or documentation.
npm run devOpen http://localhost:3000. The terminal should show a successful request
when the home page loads.
Once the app starts, run the check-only commands:
npm run lint:check
npm run format:check
npm run type:checkFor environment details and common setup problems, continue with Getting started.