Skip to content

gabriel03013/nook

Repository files navigation

nook

a peer support platform for the hard days. not therapy, not a wellness app. just a place to be heard.

License: PolyForm NC 1.0.0 Status: early development Built with TypeScript


what is this

nook is a small platform for young adults going through hard moments β€” anxiety, overwhelm, loneliness, the kind of bad day where talking to a therapist feels like too much but scrolling Instagram feels like too little.

it's built around the idea that being heard is enough sometimes. you check in with how you feel, and from there you can vent, listen to someone else, write privately in a journal nobody reads, or just sit quiet in a small group of people having the same kind of day.

no streaks. no mood graphs from 1 to 10. no coach voice telling you to "elevate your journey". just a space.

what it isn't

  • not a therapy replacement β€” if you're in crisis, please reach out to CVV (188) or a mental health professional.
  • not a meditation app β€” no breathing exercises with whale sounds.
  • not a social network β€” no feed, no likes, no follower count.
  • not a diary app β€” diary is one feature, not the whole product.
  • not for sale β€” see the License section.

stack

frontend Next.js 15 Β· React 19 Β· TypeScript 5.9 Β· Tailwind CSS

backend NestJS 10 Β· Prisma 6 Β· Zod 4 Β· Node 22

data & infra Supabase (Postgres + Auth + Realtime + Storage) Β· Redis Β· BullMQ (background jobs)

tooling pnpm workspaces Β· Turborepo Β· ESLint 9 (flat config) Β· Prettier 3

architecture

monorepo organized by responsibility:

nook/
β”œβ”€β”€ apps/
β”‚   β”œβ”€β”€ api/          # NestJS backend (REST API)
β”‚   └── web/          # Next.js frontend (App Router) β€” coming soon
β”œβ”€β”€ packages/
β”‚   β”œβ”€β”€ config/       # shared tsconfig, eslint, prettier
β”‚   β”œβ”€β”€ database/     # Prisma schema + generated client
β”‚   └── shared/       # cross-app types and Zod schemas
β”œβ”€β”€ pnpm-workspace.yaml
└── turbo.json

a few decisions worth mentioning:

  • Supabase Auth owns auth.users. NestJS syncs to public.users on first login (explicit, not a hidden trigger).
  • RLS everywhere β€” Postgres Row Level Security on every table. backend connects with a limited role (nook_app) and sets app.current_user_id per transaction.
  • diary stays private β€” strict RLS, never logged, admin access requires a documented reason and is audited.
  • realtime via Supabase β€” frontend subscribes directly to channels with a JWT, no need to push everything through the backend.

status

this is a personal project, very much in progress. building in the open because i learn better that way.

  • database schema (29 tables, 18 enums, RLS, seeds)
  • monorepo setup (pnpm + Turbo + TS strict)
  • shared types and Zod schemas
  • API scaffolding (NestJS, health check)
  • linting & formatting (ESLint 9 flat + Prettier)
  • Prisma client generation
  • typed config layer (Zod-validated env vars, fail-fast on boot)
  • Prisma wired into NestJS (lifecycle hooks, DB-aware health check)
  • auth module (Supabase JWT verification + user sync)
  • check-in flow (the entry point of the product)
  • vent / listen module
  • private diary
  • small circles
  • moderation tools
  • frontend (Next.js)

running locally

⚠️ not ready yet. when it is, this section will tell you how.

requirements (for when the time comes):

  • Node.js 22+
  • pnpm 10+
  • a Supabase project (free tier works)
  • Redis (local or Upstash)

license

PolyForm Noncommercial 1.0.0.

short version: you can read the code, learn from it, fork it, contribute, run it for personal/educational use. you cannot use it commercially or build a paid product on top of it. this is a personal non-profit project and i'd like to keep it that way.

about

built by Gabriel β€” 16, full-stack dev at PicPay, learning in public.

if you want to talk about the project, mental health tech in general, or anything really, my contacts are on my profile.


if you're going through something difficult, please reach out to CVV (188) β€” free, 24/7, anonymous.

About

A plataform to vent, listen or just sit quiet. Built for bad days, not engagement.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors