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.
Contact


