A modern, interactive learning platform built with Phoenix LiveView and Elixir
TechvitalHub is an open-source educational platform designed to provide an engaging, real-time learning experience. Built with the power of Elixir and Phoenix LiveView, it offers a seamless, interactive interface for both learners and educators.
- π Real-time Interactions - Built with Phoenix LiveView for instant, responsive user experiences
- π Secure Authentication - Email/password and Google OAuth integration
- π Course Management - Comprehensive course creation, enrollment, and progress tracking
- π₯ Role-based Access - Separate interfaces and permissions for learners and administrators
- π± Responsive Design - Mobile-first approach with modern, accessible UI
- π‘οΈ Security First - Following security best practices and regular security audits
- π§ͺ Well Tested - Comprehensive test suite with high code coverage
- π³ Production Ready - Docker containerization and Fly.io deployment configuration
Copy the example environment file and configure your settings:
cp .env.example .envEdit the .env file and provide your actual values:
- Required:
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRET(for OAuth authentication) - Optional: Database credentials (defaults to standard PostgreSQL development settings)
- Optional: Application secrets (fallback values are provided for development)
For enhanced security in development, generate new secret values:
# Generate a new secret key base
mix phx.gen.secret
# Generate a LiveView signing salt
mix phx.gen.secretAdd these to your .env file as SECRET_KEY_BASE and LIVE_VIEW_SIGNING_SALT.
To start your Phoenix server:
- Run
mix setupto install and setup dependencies - Start Phoenix endpoint with
source .env && mix phx.serveror inside IEx withsource .env && iex -S mix phx.server
Now you can visit localhost:4000 from your browser.
When running in development mode, the following test users are automatically created:
- Admin:
admin@example.com/DevAdmin123! - Learner:
learner@example.com/TestLearner123!
These users are only created in development and will not be created in production environments.
- Never commit
.envfiles to version control - All sensitive configuration uses environment variables
- Default values are provided for development convenience
- Production deployments should use proper secret management
- Obtain Google OAuth credentials from Google Cloud Console
- Configure authorized redirect URIs for your domains
- Keep client secrets secure and rotate them regularly
- Use strong passwords for production databases
- Enable SSL connections in production
- Regularly update database credentials
- Always use HTTPS in production
- Set strong, unique values for all secrets
- Use environment-specific configuration
- Enable CSRF protection (already configured)
- Keep dependencies updated
When contributing to this project:
- Never commit sensitive information (API keys, passwords, etc.)
- Use the provided
.env.exampletemplate for new environment variables - Follow the existing security patterns for configuration
- Test with development credentials only
- Contributing Guide - How to contribute to the project
- Code of Conduct - Community guidelines and standards
- Security Policy - Security guidelines and vulnerability reporting
- Changelog - Project history and release notes
- Bug Reports - Report bugs and issues
- Feature Requests - Suggest new features
- Questions & Support - Get help and ask questions
- GitHub Discussions - Community discussions
If you discover a security vulnerability, please follow our Security Policy and report it to security@atulabs.tech. Do not report security issues through public GitHub issues.
- Backend: Elixir 1.14+, Phoenix 1.7+, Phoenix LiveView
- Database: PostgreSQL with Ecto ORM
- Frontend: Phoenix LiveView, Tailwind CSS, Alpine.js
- Authentication: Phoenix Authentication generators, Ueberauth (Google OAuth)
- Testing: ExUnit, Floki for integration tests
- Code Quality: Credo, Dialyzer, Sobelow, ExCoveralls
- Deployment: Fly.io with Docker containerization
- Email/password registration and login
- Google OAuth integration
- Email verification and password reset
- Role-based access control (Admin/Learner)
- Secure session management
- Course creation and management (Admin)
- Rich course catalog with search and filtering
- Course enrollment and progress tracking
- Difficulty levels and categorization
- Featured courses and thumbnails
- Responsive learning interface
- Hot reloading for rapid development
- Comprehensive test suite with high coverage
- Code quality tools and automated linting
- Docker containerization for consistent environments
- Automated CI/CD pipeline integration
- Modern, responsive design with Tailwind CSS
- Real-time interactions with Phoenix LiveView
- Mobile-first approach
- Accessible and semantic HTML
- Dark/light theme support (coming soon)
See our GitHub Issues and Project Board for upcoming features and improvements.
This project is licensed under the MIT License - see the LICENSE file for details.