Somi is a web application designed and built as an e-learning platform with a content management system (CMS) that provides tools to for Instructors to generate content with flexibility in mind, where students can register and enroll to courses with dynamic and interactive content, discuss with other students and the course instructor in a chatroom all while efficiently taking notes, access them, and compartmentalize them into appropriate courses, academic terms, and their specific schools
1. A flexible online CMS that allows instructors to create courses and manage their contents
2. A Student centered platform for offering dynamic content from Videos, Text, PDF files, and Images.
3. Our e-learning platform will offer courses and modules on various subjects.
4. Chat functionality for each course chatroom
5. A great note keeping dashboard for students with a wide array of input fields
6. A fully featured API for Client side Applications (Mobile, Maybe JS Framework Frontend)
7. Additional Mobile app (Android) for course views
All packages for the development of this project are contained in the requirements.txt file above.
- 1. Setting up the e-learning project
- 2. Building the course app models and Registering the models in the administration site
- 3. Using fixtures to load Subjects data.
- 4. Creating models for diverse content-types (Video, Files, Text, Images)
- 5. Adding ordering to module and content objects
- 6. Adding an authentication system (Only Login and Logout)
- 7. Using custom mixins in views for Working with groups and permissions (Instructors, Students)
- 8. Using formsets for course modules
- 9. Adding content to course modules
- 10. Managing and Reordering modules and their contents (AJAX-based drag-and-drop functionality to order course modules and their contents)
- 1. Displaying courses (Filter by subject and displaying a single course overview)
- 2. Adding student registration view
- 3. Enrolling to courses and Accessing the course contents
- 4. Rendering different content-types (Video, Files, Text, Images)
- Prep New frontend components
- Customize frontend components
- Assemble
- Remove current homepage
- Homepage Header - Nav, Slider
- Homepage what do we do
- Homepage Courses Preview
- Homepage Video
- Homepage Testimonials
- Homepage Partners
- Homepage Instructors Preview
- Homepage About Us
- Dashboard Students
- Dashboard Instructors
- Courses.objects.all()
- Course detail view
- Instructors.objects.all()
- Instructor detail view Resume
- Login, Registration, Logout
- Payment Redirect Page
- Contact Us
- Footer and Newsletter form + Social Pages
- 1.Payment app, and MPESA API boilerplate
- 2.Payment Logic and monthly subscription
- 3.Free 7 day trial
- 4.Decorators
- 5.Model Mixins to restrict course views on an only Paid aceess or free trial
- 🚀 Begin Testing
- 🚀 Deploy to Heroku
- 🚀 Going Live! Version 1
- Cache Backends Framework for Rendering and Caching Content - Memcached
- Cache settings - Adding Memcached
- Low-level cache API
- Caching based on dynamic data
- Caching template fragments
- Caching views
- Using the per-site cache
- Build Blog App
- Setting up Django REST framework
- Defining serializers (parsers and renderers)
- Building list and detail views
- Creating nested serializers
- Building custom API views
- Handling authentication and Permissions
- Viewsets and routers
- Prep: Consuming the RESTful API
- Merging auth system
- Notes Models
- Notes url routes
- Note Views
- REST API for Notes
- Creating a chat application
- Implementing the chat room view
- Deactivating the per-site cache
- Asynchronous applications using ASGI and Django with Channels
- Writing chat.consumer
- Routing
- Implementing the WebSocket client
- Enabling a channel layer with Redis
- Updating the consumer to broadcast messages
- Adding context to messages
- Modifying the consumer to be fully asynchronous
- Integrating the chat application with existing views
- Creating a production environment
- Using PostgreSQL
- Serving Django through WSGI
- Installing and Configuring NGINX to serve static files
- Serving static and media assets
- Securing connections with SSL/TLS
- Redirecting HTTP traffic over to HTTPS
- Using Daphne for Django Channels, Including Daphne in the NGINX configuration
- Using secure connections for WebSockets
- Creating a subdomain middleware
- Serving multiple subdomains with NGINX
- Implementing custom management commands
- 🚀 Going Live!
- Optimizing the app
- Building an Android App to consume the API
- Adding Blog Functionality
- Maybe adding a specialized React Frontend