How hudsonjr90/portfoliossr works
This is a Nuxt portfolio application: visitors browse a data-backed professional profile, while a development-only admin manages portfolio records. The public data path is documented as Nitro API → service → repository → Prisma/PostgreSQL; sampled service and repository code confirm the transformation and query stages. The README documents project listing and authenticated admin CRUD for projects, education, experience, testimonials, and technologies. Admin section components are visible in the dashboard, but most endpoint implementations and public-page data wiring were not sampled, so those connections are omitted or marked unverified.
Main entry points: AdminDashboard.vue Admin dashboard · dev-admin Admin endpoints · index.vue Portfolio page · prisma.ts Prisma client
Components 20
Public portfolio
- Portfolio page
app/pages/index.vue - Profile sections
app/components/pages - Project showcase
app/components/pages/ProjectsSection.vue
Portfolio data
- Portfolio API
server/api/portfolio.get.ts - Project API
server/api/projects.get.ts - Portfolio service
server/services/portfolio.service.ts - Portfolio repository
server/repositories/portfolio.repository.ts
Development admin
- Admin page
app/pages/admin.vue - Admin dashboard
app/components/pages/admin/AdminDashboard.vue - Education editor
app/components/pages/admin/AdminEducationSection.vue - Experience editor
app/components/pages/admin/AdminExperienceSection.vue - Technology editor
app/components/pages/admin/AdminTechnologySection.vue - Testimonial editor
app/components/pages/admin/AdminTestimonialsSection.vue - Admin endpoints
server/api/dev-admin - Session controls
server/utils/dev-admin.ts - Input validation
server/utils/admin-record-input.ts - Record checks
server/utils/admin-records.ts
Persistence
- Prisma client
server/utils/prisma.ts - PostgreSQL
Other components
- Visitor
Connections 22
- Visitor → Portfolio page: opens
README.md - Portfolio page → Profile sections: renders
- Portfolio page → Project showcase: renders
- Portfolio page → Portfolio API: requests data
- Project showcase → Project API: loads projects
- Portfolio API → Portfolio service: delegates to
README.md - Portfolio service → Portfolio repository: calls
server/services/portfolio.service.ts - Portfolio repository → Prisma client: queries
server/repositories/portfolio.repository.ts - Project API → Prisma client: queries
server/api/projects.get.ts - Prisma client → PostgreSQL: persists data
README.md - Visitor → Admin page: opens
- Admin page → Admin dashboard: renders
- Admin dashboard → Education editor: renders
app/components/pages/admin/AdminDashboard.vue - Admin dashboard → Experience editor: renders
app/components/pages/admin/AdminDashboard.vue - Admin dashboard → Technology editor: renders
app/components/pages/admin/AdminDashboard.vue - Admin dashboard → Testimonial editor: renders
app/components/pages/admin/AdminDashboard.vue - Admin dashboard → Admin endpoints: manages projects
app/components/pages/admin/AdminDashboard.vue - Admin dashboard → Admin endpoints: authenticates
app/components/pages/admin/AdminDashboard.vue - Admin endpoints → Session controls: checks session
server/api/dev-admin/experiences.post.ts - Admin endpoints → Input validation: validates input
server/api/dev-admin/experiences.post.ts - Admin endpoints → Record checks: checks records
server/api/dev-admin/experiences.post.ts - Admin endpoints → Prisma client: writes records
server/api/dev-admin/experiences.post.ts