Skip to content

An open-source web application for helping others learn functional programming with elixir, phoenix, liveview, ecto, ash, git and github, and DOM

License

Notifications You must be signed in to change notification settings

AtulabsTech/techvital_hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

TechvitalHub

License: MIT Elixir Phoenix PostgreSQL Code of Conduct

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.

✨ Key Features

  • πŸš€ 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

Development Setup

1. Environment Variables

Copy the example environment file and configure your settings:

cp .env.example .env

Edit the .env file and provide your actual values:

  • Required: GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET (for OAuth authentication)
  • Optional: Database credentials (defaults to standard PostgreSQL development settings)
  • Optional: Application secrets (fallback values are provided for development)

2. Generate Secrets (Optional)

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

Add these to your .env file as SECRET_KEY_BASE and LIVE_VIEW_SIGNING_SALT.

3. Start the Application

To start your Phoenix server:

  • Run mix setup to install and setup dependencies
  • Start Phoenix endpoint with source .env && mix phx.server or inside IEx with source .env && iex -S mix phx.server

Now you can visit localhost:4000 from your browser.

4. Development Test Users

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.

Security Best Practices

Environment Variables

  • Never commit .env files to version control
  • All sensitive configuration uses environment variables
  • Default values are provided for development convenience
  • Production deployments should use proper secret management

OAuth Configuration

  • Obtain Google OAuth credentials from Google Cloud Console
  • Configure authorized redirect URIs for your domains
  • Keep client secrets secure and rotate them regularly

Database Security

  • Use strong passwords for production databases
  • Enable SSL connections in production
  • Regularly update database credentials

Deployment Security

  • Always use HTTPS in production
  • Set strong, unique values for all secrets
  • Use environment-specific configuration
  • Enable CSRF protection (already configured)
  • Keep dependencies updated

Contributing

When contributing to this project:

  1. Never commit sensitive information (API keys, passwords, etc.)
  2. Use the provided .env.example template for new environment variables
  3. Follow the existing security patterns for configuration
  4. Test with development credentials only

Community and Support

πŸ“‹ Project Resources

πŸ› Issues and Support

πŸ”’ Security

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.

Tech Stack

  • 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

Features

πŸ” Authentication & User Management

  • Email/password registration and login
  • Google OAuth integration
  • Email verification and password reset
  • Role-based access control (Admin/Learner)
  • Secure session management

πŸ“š Course 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

πŸ’» Developer Experience

  • 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

🎨 User Interface

  • 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)

Roadmap

See our GitHub Issues and Project Board for upcoming features and improvements.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

An open-source web application for helping others learn functional programming with elixir, phoenix, liveview, ecto, ash, git and github, and DOM

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published