Projects

Product

Zeni

A multi-role learning product that connects course delivery, instructor operations, payments, and real-time communication.

At a glance

The work before the feature list

Problem
An online learning product needs to support the different workflows of students, instructors, and administrators without fragmenting the experience or operational data.
Role
Full Stack Developer (Self-employed)
Context
Independent full-stack product
Period
Sep 2024 - Present (occasional updates)

Outcome

A working full-stack LMS with enrollment, instructor approval, course operations, subscription payments, progress, and real-time communication.

The statement above describes verified shipped scope or current project status; it does not imply adoption or business metrics that are not available.

Decisions

What I chose and what it cost

Product decision

Design around roles, not disconnected features

Context
Students, instructors, and staff have different goals but operate on the same courses and enrollment data.
Choice
Define clear role-specific workflows while keeping one shared product and domain model.
Tradeoff
Permissions and navigation become more deliberate, but product behavior stays consistent across roles.

UX decision

Gate instructor access through an approval flow

Context
Immediate instructor access would simplify onboarding but remove an important quality-control step.
Choice
Add an application and administrative approval workflow before instructor capabilities become available.
Tradeoff
There is more onboarding friction in exchange for clearer trust and operational control.

Backend decision

Keep real-time behavior inside the Laravel stack

Context
Chat and live updates need persistent application identity and authorization.
Choice
Use Reverb with the existing Laravel application rather than introduce a separate real-time service.
Tradeoff
The application remains operationally simpler, while Laravel takes responsibility for another long-running workload.

Context

Zeni explores what it takes to make an LMS work as a product rather than a collection of course pages. The application has to coordinate learner progress, instructor content, administrative review, subscriptions, and communication around the same domain.

Product and system shape

Students browse, enroll, learn, review, and communicate. Instructors apply, organize course content, and work with enrolled students. Administrators review instructor applications and manage users, courses, and subscriptions through Filament.

Laravel and Livewire keep the application server-driven. PostgreSQL holds the shared product state, Chapa handles subscription payments, Socialite supports OAuth, and Reverb provides real-time communication without creating a separate service boundary.

Current status

The core product workflows are implemented and demonstrable. Zeni is not under active development; I return to it occasionally for small improvements and maintenance. The evidence here reflects shipped scope and working behavior rather than active product growth.

Ownership

What I was responsible for

  • Product scope and multi-role workflows
  • Application architecture and Laravel implementation
  • Responsive UI, payments, real-time features, and admin operations

Under the hood

Technical depth, available when it is useful

The implementation detail is grouped by system area so the page remains scannable.

For Students
  • Course Enrollment: Browse and enroll in various courses
  • Interactive Learning: Access organized lessons and course materials
  • Progress Tracking: Track completion of lessons
  • Community: Chat with instructors and other students
  • Reviews: Leave reviews for completed courses
  • Follow System: Follow favorite instructors
For Instructors
  • Course Management: Create, edit, and manage courses
  • Content Organization: Organize lessons into sections
  • Student Engagement: Chat with enrolled students
  • Course Analytics: Track enrollments and student progress
For Administrators
  • User Management: Manage students and instructors
  • Course Oversight: Monitor and manage all courses
  • Instructor Applications: Review and approve instructor applications
  • Subscription Management: Manage subscription plans and payments

Evidence

What can be inspected

Working product
The recorded walkthrough shows course, account, and learning interfaces running together.
Source code
The repository exposes the application structure and integrations.
  • Laravel 11
  • Livewire 3
  • Filament
  • TailwindCSS
  • PostgreSQL
  • Chapa
  • Reverb
  • Socialite

Next

What I would change or test next

  1. When revisiting the project, validate the highest-risk learner and instructor journeys before expanding scope.
  2. Add outcome measures only if the product returns to active development and gains real usage.

Contact

Want to ask me about this project?

Email me