mirror of
https://github.com/tobikli/u_plan.git
synced 2026-07-31 05:15:37 +02:00
University Planing App
https://uplan.twks.net
- TypeScript 97.1%
- PLpgSQL 1.7%
- CSS 1%
- JavaScript 0.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| app | ||
| components | ||
| db | ||
| hooks | ||
| lib | ||
| public | ||
| types | ||
| util | ||
| .gitignore | ||
| components.json | ||
| eslint.config.mjs | ||
| LICENSE | ||
| next.config.ts | ||
| nixpacks.toml | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| proxy.ts | ||
| README.md | ||
| tsconfig.json | ||
UPlan
Planning workspace built on Next.js + Supabase with protected dashboard views for programs and courses, user account management, and a themed landing page.
Features
- Supabase auth: sign-up, login, password reset/update, and account deletion (server-side via service role).
- Program and course management UI with tables/forms and authenticated layout.
- Responsive design with light/dark theme toggle and animated landing background.
- Server + client Supabase helpers for SSR and client-side data access.
Stack
- Next.js (App Router), TypeScript, React 19
- Supabase (
@supabase/ssr,@supabase/supabase-js) - Tailwind/shadcn-ui components, Radix Primitives
Prerequisites
- Node.js 20+ and npm
- Supabase project (URL + keys)
Environment
Create .env.local with:
NEXT_PUBLIC_SUPABASE_URL=your-supabase-url
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=your-supabase-anon-key
SERVICE_ROLE_KEY=your-supabase-service-role-key # used only on the server
Local Development
npm install
npm run dev
# open http://localhost:3000
Production
npm run lint # optional
npm run build
npm start # uses PORT or 3000
Notable Paths
app/app/*: authenticated dashboard (programs, courses, settings).auth*: user management routes (e.g.,auth/deletefor account removal).lib/supabase/*: browser/server Supabase clients.
Deployment Notes
- Do not expose
SERVICE_ROLE_KEYon the client; it must be set as a server-side env var only. - Ensure all Supabase env vars are configured in your hosting platform.