Education platform

Briquette LMS

A multi-tenant learning system for a bioinformatics course, shaped around roles, modules, submissions, and live communication.

Learning system
Status
In production
Project type
Own product
Role
Founder and lead developer
Scope
Product, platform, and delivery
Stack
React · TypeScript · Vite · Express · Drizzle · PostgreSQL · Socket.io · Tailwind CSS · Playwright · Docker

The problem

A technical course needed one dependable place for administrators, teachers, and students to move through content, work, feedback, and communication without losing the thread.

Decisions

  • Model roles and tenant boundaries before polishing screens.
  • Keep course modules, submissions, grading, and communication in one understandable flow.
  • Treat security, backups, and operational runbooks as part of the product.

Evidence

  • Distinct experiences for admin, teacher, and student responsibilities.
  • Module-scoped communication, materials, assignments, submissions, and feedback.
  • Typed full-stack architecture with tests, audits, and deployment documentation.

Services

  • Product strategy
  • Product design
  • Full-stack development

Proof

  • Multi-tenant learning workflows for administrators, teachers, and students
  • Typed full-stack architecture with tests and operational documentation

Architecture

A multi-tenant learning platform that unifies roles, modules, submissions, feedback, and communication.

Approved material

Briquette LMS course interface.
Learning system cover surface.
Briquette LMS login screen.
Role-aware access to the learning system.
Briquette LMS student dashboard.
Student dashboard for modules and progress.
Briquette LMS administration dashboard in a QA environment.
Administration panel from a sanitized QA environment.
Briquette LMS teacher dashboard in a QA environment.
Teacher dashboard role surface in QA.

Privacy

No learner, course, tenant, or operational data is published.

What I learned

  • A learning product is an orchestration problem before it is a component problem.
  • The most useful interface is often the one that makes the next responsibility obvious.

Keep going?

Let’s talk about the real problem.

Start a conversation