Appearance
Tech Stack Overview
This document provides a comprehensive overview of our project's technologies and tools. It aims to familiarize you with our technical landscape so you can hit the ground running in your first few weeks.
Server Stack
Our server-side infrastructure prioritizes performance, scalability, and simplicity. Below is an overview of the core components you'll be working with:
- OS: Ubuntu 22.04 LTS
- Web Server: nginx (>= 1.26) (We are evaluating the possibility of migrating to FrankenPHP with Caddy for performance improvements.)
- PHP: Version 8.4, managed via Composer as the dependency manager.
- Database: MySQL 5.7 (in the process of migrating to MySQL 8.0)
- Caching: Redis as the key-value store for caching and session management.
- Front-end: Plain JavaScript, with Laravel Blade serving as the template engine. Web Components are used for reusable UI elements.
- Latest Node.js LTS version for build tools.
- npm for package management.
Server Architecture
Our architecture is designed for simplicity and high performance. Below is a simplified overview of our core services:
Network Diagram
Key Components
- App Server:
- nginx: Handles HTTP requests and serves static content.
- PHP-FPM: Processes PHP HTTP requests.
- PHP-CLI: Manages cron jobs and queue workers.
- Data Storage:
- MySQL: Managed via DigitalOcean Managed Databases for high availability.
- Redis: Used for caching and session storage.
- AWS S3: Stores static assets and backups.
- Content Delivery Network (CDN):
- AWS CloudFront: Distributes static content from S3, caching resources closer to users.
Infrastructure Notes
- Simplicity Over Complexity: We avoid containerization technologies like Docker or Kubernetes in production to maintain a straightforward, performant setup.
- Content Delivery Strategy: Public pages are geo-cached for optimal performance, while content-heavy endpoints (e.g., course pages) are gated behind a paywall. This allows us to efficiently serve content using a single web server.
- Hosting and Management:
- Hosted on DigitalOcean Droplets.
- Server provisioning and management via Laravel Forge.
Server Locations
We host our services in specific regions to meet performance expectations and compliance requirements from our corporate clients:
- App Servers: DigitalOcean's
NYC3region. - AWS S3:
us-east-1region.
Ensure this information remains current, as clients frequently request these details.
Related Documentation for Clients
For security-related inquiries (such as SOC 2 certification), refer to our security documentation.
Back-end Stack
Our back-end leverages modern PHP practices, focusing on maintainability and performance:
- Framework: Laravel (latest stable version).
- PHP Version: 8.4
- Coding Standards:
- IxDF coding standard (based on PER-2); see our internal PHP Conventions and Laravel Conventions for details.
- Testing:
- Debugging:
Front-end Stack
Our front-end utilizes modern JavaScript features and tools to enhance developer productivity:
- Template Engine: Blade Templates
- JavaScript:
- Vanilla JavaScript with ECMAScript Stage 3+ features.
- Web Components: For creating reusable UI elements.
- Build Tools:
- Testing:
- Coding Standards:
- Follow our JavaScript Conventions and CSS Conventions.
Services and Tools
We leverage several services to streamline development, deployment, and monitoring:
- Version Control:
- git & GitHub: GitHub
- Issue Tracking:
- Developers: GitHub Issues and GitHub Projects
- Non-Technical Teams: Asana
- CI/CD:
- GitHub Actions: For automated testing and deployment pipelines.
- Hosting:
- DigitalOcean: DigitalOcean Droplets
- Server Management:
- Laravel Forge: Forge
- Monitoring and Analytics:
- Performance Monitoring: New Relic
- Site Performance Analysis: GTmetrix, WebPageTest
- User Analytics: Google Analytics
- Cross-Browser Testing:
- BrowserStack: BrowserStack