Skip to main content

Back to Projects

Project Detail

Lama Dev School Management Dashboard

A full-stack Learning Management System (LMS) web application implemented with the Next.js App Router. It exposes role-based dashboards and CRUD flows for school entities (students, teachers, parents, classes, grades, subjects, lessons, ex...

Full-stack engineerDuration: 3 monthsType: platform

Key Achievement Metrics

prisma_models

14

seeded_records

194

next_version

14.2.25

Architecture View

Processing state: architecture signal graph is initializing...

Decision Log

Server-first using Next.js App Router

reduces client bundle size, simplifies secure server-side interactions with Prisma and Clerk, enables SSR for SEO/first-contentful-paint.

Trade-off: increased server CPU/latency per-page; requires careful DB query optimization; more server resources for dynamic pages.

Use Clerk for identity and role metadata

removes burden of user password handling, integrates quickly with Next.js.

Trade-off: vendor dependency for user lifecycle; cross-system consistency concerns when pairing Clerk operations with application DB writes.

Prisma ORM + PostgreSQL

Improved developer ergonomics, type inference, and predictable migrations.

Trade-off: ORM abstraction may hide SQL-level optimization opportunities; requires connection pooling strategy for serverless deployments.

Architecture Narrative

Challenge

Provides a single-seat administrative and user-facing interface to manage school operations (scheduling, assessments, attendance, events, and announcements) with role-based access control and centralized data storage.

Solution

Monolithic web application using Next.js (App Router) as the server/frontend runtime with server components and server actions; external services for authentication and media storage.

Result

Key measurable signals: prisma_models (14), seeded_records (194), next_version (14.2.25).

Trade-off Matrix

DimensionSelected OptionImpactCompromise
Auth providerClerk (third-party)Quick integration, secure password handling, built-in session managementVendor lock-in, cross-system consistency issues when pairing Clerk operations and Prisma writes
Server rendering vs client-side SPAServer-first (App Router + server components)Smaller client bundles, SEO, single canonical data fetch path on serverHigher server CPU/latency; requires efficient DB queries and caching to maintain low latency

What I'd Do Differently

+

Add transactional reconciliation and idempotency for cross-system writes: implement a write-queue/worker or outbox pattern so Clerk user creation and Prisma domain persistence are either both committed or retried/compensated.

+

Add structured observability: integrate Sentry for errors, OpenTelemetry traces for request + external-call correlation (Clerk + DB), and a metrics exporter (Prometheus/Grafana or third-party) to capture latency/throughput.

Estifanos Kebede

System Engineer & Full Stack Developer

Social

SYSTEM: ESTIFANOS.PORTFOLIO

STATUS: OPERATIONAL

LAST_UPDATED: 2026

© 2026 Estifanos Kebede. Built with precision and intent.