Enterprise-grade web platform for Code Academy Uganda that powers marketing pages, program enrollment, content publishing, and a full administrative suite. The app is built on Laravel 12 with Livewire 3 and Tailwind CSS, emphasizing a premium UX and an operations-ready backend.
- Branded public site with events, programs, stories, and marketing sections
- Enrollment workflows with data validation and flexible schema handling
- Administrative suite for posts, programs, comments, and communications
- Built-in backup utility for shared hosting environments without mysqldump
- Production-friendly asset pipeline with Vite
- Backend: Laravel 12, PHP 8.2+
- Frontend: Livewire 3, Tailwind CSS, Alpine.js, Vite
- Auth: Laravel Fortify
- Database: MySQL or MariaDB (SQLite supported for tests)
- Testing: PHPUnit / Pest
- Livewire components under app/Livewire and resources/views/livewire
- Layouts and shared UI under resources/views/components
- Domain models under app/Models
- Configuration under config
- Assets built via Vite into public/build
- PHP 8.2 or newer
- Composer
- Node.js 18+ and npm
- MySQL or MariaDB (or SQLite for local dev)
- Install PHP dependencies:
- composer install
- Create environment file:
- copy .env.example to .env
- Generate app key:
- php artisan key:generate
- Configure .env with database credentials
- Run migrations:
- php artisan migrate
- Install frontend dependencies:
- npm install
- Build assets:
- npm run build
- Run the app:
- php artisan serve
- Frontend dev server: npm run dev
- Laravel server: php artisan serve
- Queue worker: php artisan queue:listen --tries=1
- Combined: composer run dev
The application uses a role-based field on the users table.
Set a user as admin using tinker:
- php artisan tinker
Then run:
- App\Models\User::where('email', 'your-email@example.com')->update(['role' => 'admin']);
- Run all tests: php artisan test
- PHPUnit config: phpunit.xml
This deployment flow supports environments without SSH access or mysqldump.
- Build assets locally:
- npm run build
- Upload application code:
- Upload all files except public to a private_app folder
- Upload public contents to public_html
- Update public_html/index.php:
- require DIR.'/../private_app/vendor/autoload.php';
- $app = require_once DIR.'/../private_app/bootstrap/app.php';
- Configure .env in private_app with production values
- Storage symlink (no SSH):
- Create a link.php in public_html
- Add:
- Visit once, then delete the file
The admin panel includes a Pure PHP SQL exporter to generate full database backups in restricted environments. Access it from the admin settings area and download the generated SQL file.
- Set APP_ENV=production and APP_DEBUG=false in production
- Use strong database credentials
- Ensure storage and bootstrap/cache are writable by the web server
Common composer scripts:
- composer run dev: runs server, queue, and Vite
- composer run test: runs automated tests
- composer run setup: bootstraps a full environment
This repository is provided for Code Academy Uganda operations. If you plan to reuse or redistribute, review licensing for any third-party assets.