A modern, containerized learning platform for transitioning from Python/TypeScript to Go, designed with ADHD-friendly features and built with Tailwind CSS for responsive design.
- π― ADHD-Friendly Design: 45-minute focused sessions with break reminders
- π Full Dark Mode: Complete dark/light theme support with Tailwind CSS
- π± Responsive Design: Mobile-first design that works on all devices
- πΎ Persistent Progress: PostgreSQL database with Docker volumes for data persistence
- π Real-time Sync: Progress automatically saved and synced across sessions
- π¨ Modern UI: Built with Tailwind CSS for beautiful, accessible design
- π³ Docker Ready: Fully containerized with Docker Compose
- Docker and Docker Compose installed on your system
- Git (to clone the repository)
git clone <repository-url>
cd golang_course_guideCopy the example environment file and customize if needed:
cp .env.example .envThe default configuration works out of the box with Docker Compose.
# Build and start all services
docker-compose up --build
# Or run in detached mode
docker-compose up --build -d- Application: http://localhost:3000
- Database: localhost:5432 (if you need direct access)
# Stop services
docker-compose down
# Stop and remove volumes (β οΈ This will delete all data)
docker-compose down -vFor development with hot reloading:
# Start only the database
docker-compose up postgres -d
# Install dependencies locally
npm install
# Run development server with CSS watching
npm run dev-
Install Dependencies:
npm install
-
Setup PostgreSQL:
- Install PostgreSQL locally
- Create database:
golang_course - Update
.envwith your database credentials
-
Build CSS:
npm run build:css
-
Start Application:
npm start
golang_course_guide/
βββ public/ # Static files served by Express
β βββ index.html # Main HTML file with Tailwind classes
β βββ app.js # Frontend JavaScript with API integration
β βββ style.css # Generated Tailwind CSS
βββ src/ # Source files for building
β βββ input.css # Tailwind CSS input file
βββ models/ # Database models (Sequelize)
β βββ index.js # Database connection and associations
β βββ UserProgress.js # User progress tracking
β βββ CompletedSection.js # Completed sections
β βββ UserSettings.js # User preferences
βββ routes/ # API routes
β βββ progress.js # Progress tracking endpoints
βββ scripts/ # Database and utility scripts
β βββ init-db.sql # Database initialization
βββ server.js # Express server setup
βββ Dockerfile # Docker container configuration
βββ docker-compose.yml # Multi-container setup
βββ tailwind.config.js # Tailwind CSS configuration
βββ package.json # Dependencies and scripts
GET /api/progress- Get user progress and settingsPUT /api/progress/current-section- Update current sectionPOST /api/progress/complete-section- Mark section as completePUT /api/progress/settings- Update user settingsGET /api/progress/stats- Get progress statistics
GET /api/health- Application health status
- user_progress: Tracks user sessions and overall progress
- completed_sections: Records completed lessons and labs
- user_settings: Stores user preferences and settings
- PostgreSQL database with Docker volumes
- Automatic schema creation via Sequelize
- Data persists across container restarts
The application uses Tailwind CSS for styling. To customize:
- Edit
tailwind.config.jsfor theme customization - Modify
src/input.cssfor custom components - Rebuild CSS:
npm run build:css
Dark mode is implemented using Tailwind's class-based strategy:
- Toggle via the theme button in the header
- Preference saved to database and localStorage
- All components support both light and dark themes
The application is mobile-first with breakpoints:
xs: 475px and upsm: 640px and upmd: 768px and up (tablet)lg: 1024px and up (desktop)xl: 1280px and up (large desktop)
-
Port Already in Use:
# Check what's using port 3000 lsof -i :3000 # Kill the process or change the port in docker-compose.yml
-
Database Connection Issues:
# Check if PostgreSQL container is running docker-compose ps # View logs docker-compose logs postgres
-
CSS Not Loading:
# Rebuild CSS npm run build:css # Or rebuild the entire container docker-compose up --build
# View application logs
docker-compose logs app
# View database logs
docker-compose logs postgres
# Follow logs in real-time
docker-compose logs -f app- Fork the repository
- Create a feature branch
- Make your changes
- Test with Docker:
docker-compose up --build - Submit a pull request
MIT License - see LICENSE file for details.