Aug 2026 – Present
LASCE Research Lab Platform
The web platform for UCR's Space Weather Lab. I built its research publications, the in-place CMS and the news management.
My roleFull-stack developer on team g02 (publications, in-place CMS, news, admin dashboard)
View on GitHub ↗- tested components
- 20+
- tested components
LASCE is the platform for the Universidad de Costa Rica's Space Weather Lab: a pnpm + Turborepo monorepo with a Next.js app (UI and API) and a Python worker sharing a BullMQ queue, backed by PostgreSQL, Redis, InfluxDB and MinIO. Several student teams build it together; I work on team g02.
Research publications
- Designed a dedicated research PostgreSQL schema in Prisma (publishers, research records, authors and an ordered author join for citation order) with unique DOIs and source URLs and a date index, plus its migration and seed data.
- Mirrored the schema in SQLAlchemy for the Python worker and wrote a test that asserts the mirror matches Prisma's tables, columns and foreign keys, so the two runtimes can't drift apart.
- Replaced the page's mock data with a Server Component that reads from Postgres, built the PublicationsExplorer and PublicationCard components, and documented the schema.
A reusable in-place CMS
- An edit mode that admins toggle from the admin shell (shared through a provider), a wrapper that adds edit and delete actions to any piece of content, and an add-item card, so pages are edited where they're read.
- A shared UI kit: modal (three sizes), confirm dialog, labelled form field, file drop input, icon button, toggle and a danger button variant, each with Storybook stories and Vitest tests.
- Wrote the guide other teams follow to make their own features CMS-editable.
News management
- Article form, editable news cards and a news explorer that persists through the API instead of local state.
- Permission-gated REST routes (POST /api/news, PATCH and DELETE /api/news/[id]), with each create, edit and delete control in the UI gated by its own grant.
- Tests for the routes, the data functions and every component, plus a generic validator shared by the forms.
Admin dashboard and uploads
- Built the first version of the admin dashboard (shell, sidebar, stat cards, status pills and summary page) with a Playwright end-to-end spec.
- Fixed uploaded images not loading on staging, restricted the accepted file types for uploads to MinIO, and documented the build arguments the deployment needs.
Built with
Next.js 16TypeScriptPrismaPostgreSQLSQLAlchemyVitestStorybookPlaywrightMinIOTurborepo
Next project
Virtual Microscope Admin Panel →



