How kukuro-dev/aaron-portfolio works
This is a Supabase-backed personal portfolio with a public-facing profile and project showcase, plus an admin area for maintaining portfolio content and reviewing contact messages. The public page loads portfolio data and presents it alongside a contact form; administrators authenticate, manage the content categories, and process submitted messages. The contact form writes directly to Supabase, while a separate contact API route also supports message submission. The tree and excerpts establish these paths, but do not expose every admin form’s data operations.
Main entry points: supabase.ts Supabase client · page.tsx Portfolio page · admin Admin pages · ContactForm.tsx Contact form
Components 17
Public portfolio
- Portfolio page
app/page.tsx - Contact form
components/ContactForm.tsx
Admin management
- Admin pages
app/admin - Admin dashboard
app/admin/page.tsx - Profile editor
app/admin/profile/page.tsx - Project management
app/admin/projects - Content management
app/admin - Message inbox
app/admin/messages/page.tsx
Application runtime
- Contact API
app/api/contact/route.ts - Admin authentication
lib/auth.ts - Admin authorization
lib/require-admin.ts - Supabase client
lib/supabase.ts - Server client
lib/supabase-server.ts
Supabase services
- Supabase database
- Supabase storage
Other components
- Portfolio visitor
- Administrator
Connections 18
- Portfolio visitor → Portfolio page: opens
- Portfolio page → Server client: creates client
- Server client → Supabase database: queries portfolio
- Portfolio page → Contact form: renders
- Contact form → Supabase client: writes message
- Portfolio visitor → Contact form: submits
- Portfolio visitor → Contact API: posts message
- Contact API → Supabase client: inserts message
- Administrator → Admin pages: uses
- Admin pages → Admin authentication: authenticates
- Admin pages → Admin authorization: checks access
- Admin dashboard → Supabase client: loads stats
- Profile editor → Supabase client: updates profile
- Profile editor → Supabase storage: uploads files
- Project management → Supabase client: manages projects
- Content management → Supabase client: manages content
- Message inbox → Supabase client: manages messages
- Supabase client → Supabase database: queries and writes