ChurchAfrica is a modern, mobile-first church management system designed specifically for African churches. Built with Vue 3, Quasar Framework, Laravel 11, and PostgreSQL, it provides comprehensive tools for member management, attendance tracking, and church administration.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Frontend β β Backend β β Database β
β Vue 3 + βββββΊβ Laravel 11 + βββββΊβ SQLite/ β
β Quasar β β Sanctum β β PostgreSQL β
β Framework β β API β β PostgreSQL β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
- Development: SQLite for fast local development
- Production: PostgreSQL for scalability
- Migration Compatibility: Same Laravel migrations work across both environments
- Network Resilience: Automatic fallback to SQLite when database is unreachable
- Node.js 18+ and npm
- PHP 8.2+ and Composer
- Laravel Herd (recommended) or XAMPP/WAMP
- Git for version control
git clone https://github.com/PrecisePeopleMultimedia/ChMS.git
cd ChMS# Navigate to backend
cd backend
# Install dependencies
composer install
# Copy environment file
cp .env.example .env
# Generate application key
php artisan key:generate
# Run migrations
php artisan migrate
# Seed database (optional)
php artisan db:seed# Navigate to frontend
cd frontend
# Install dependencies
npm install
# Copy environment file
cp .env.example .env
# Start development server
npm run dev# Backend (Laravel Herd)
# Herd will automatically serve the backend at http://backend.test
# Frontend
cd frontend
npm run dev
# Frontend will be available at http://localhost:1811- Frontend: Vue 3, Quasar Framework, TypeScript, Tailwind CSS
- Backend: Laravel 11, PHP 8.2, Laravel Sanctum
- Database: PostgreSQL (production), SQLite (development)
- Testing: Vitest, Playwright, PHPUnit
- Deployment: Vercel (frontend), Laravel Forge (backend)
- Laravel Sanctum: JWT token-based authentication
- Google OAuth: Social login integration
- Role-based Access: Admin, Member, Guest roles
- Session Management: Secure token handling with refresh
- Password Security: Bcrypt hashing with strength validation
churchafrica/
βββ .github/ # GitHub Actions CI/CD
βββ .specify/ # Speckit specifications
βββ backend/ # Laravel backend
β βββ app/ # Application code
β βββ config/ # Configuration files
β βββ database/ # Migrations and seeds
β βββ doc/ # Backend documentation
βββ frontend/ # Vue.js frontend
β βββ src/ # Source code
β βββ public/ # Static assets
β βββ tests/ # Frontend tests
βββ README.md # This file
main β feature/feature-name β dev β main
- Create feature branch:
git checkout -b feature/feature-name - Develop feature: Make changes and commits
- Push to feature branch:
git push origin feature/feature-name - Create pull request: Feature β Dev
- Code review: At least 1 reviewer
- Merge to dev: After approval and CI/CD passes
- Create pull request: Dev β Main
- Code review: At least 2 reviewers
- Merge to main: After approval and CI/CD passes
# Frontend
npm run dev # Start development server
npm run build # Build for production
npm run test:unit # Run unit tests
npm run test:e2e # Run E2E tests
npm run lint # Run ESLint
npm run format # Format code with Prettier
# Backend
php artisan serve # Start development server
php artisan test # Run tests
php artisan migrate # Run migrations
php artisan seed # Seed database
composer test # Run all tests- Unit Tests: Vitest with Vue Test Utils
- E2E Tests: Playwright for end-to-end testing
- Coverage: > 90% code coverage target
- Unit Tests: PHPUnit for unit testing
- Feature Tests: Laravel feature tests
- Coverage: > 80% code coverage target
# Frontend tests
cd frontend
npm run test:unit # Unit tests
npm run test:e2e # E2E tests
npm run test:coverage # Coverage report
# Backend tests
cd backend
php artisan test # All tests
php artisan test --coverage # Coverage reportVITE_API_URL=http://backend.test/api
VITE_SENTRY_DSN=your-sentry-dsnAPP_NAME=ChurchAfrica
APP_ENV=local
APP_DEBUG=true
APP_URL=http://backend.test
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=postgres
DB_USERNAME=postgres
DB_PASSWORD=your-db-password
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://backend.test/api/auth/google/callback- Development: SQLite (local) or PostgreSQL via Docker Compose
- Staging: PostgreSQL (staging)
- Production: PostgreSQL (production)
- Local Development: SQLite for fast iteration
- Production Ready: PostgreSQL for scalability
- Migration Compatibility: Same Laravel migrations work across environments
- Network Resilience: Automatic fallback when database is unreachable
- Data Sync: Seamless data migration between environments
- Authentication System:
.specify/specs/000-authentication-system/ - Organization Setup:
.specify/specs/001-organization-setup/ - Member Management:
.specify/specs/002-member-management/ - Attendance System:
.specify/specs/003-attendance-system/ - UI/UX System:
.specify/specs/004-ui-ux-system/ - Dashboard System:
.specify/specs/005-dashboard-system/ - Integration System:
.specify/specs/008-integration-system/
- API Reference:
docs/api/api.md - Backend Documentation:
backend/doc/ - Environment Configuration:
backend/doc/environments.md - Monitoring Setup:
backend/doc/monitoring.md
- Branch Protection:
.github/BRANCH_PROTECTION.md - CI/CD Pipeline:
.github/workflows/ci-cd.yml - Roadmap:
.specify/roadmap.md
- Frontend:
npm run dev(http://localhost:1811) - Backend: Laravel Herd (http://backend.test)
- Frontend: Vercel (staging)
- Backend: Laravel Forge (staging)
- Frontend: Vercel (production)
- Backend: Laravel Forge (production)
- Authentication: Laravel Sanctum with JWT tokens
- Authorization: Role-based access control
- Data Protection: Database-level security and encryption
- CSRF Protection: Laravel CSRF middleware
- Input Validation: Comprehensive input validation
- Rate Limiting: API rate limiting
- Environment Variables: Never commit sensitive data
- Database Security: Use SSL/TLS connections
- API Security: Implement proper authentication
- Input Sanitization: Sanitize all user input
- Regular Updates: Keep dependencies updated
- Error Tracking: Sentry for error tracking
- Performance: Laravel Telescope for debugging
- Queue Monitoring: Laravel Horizon for queue management
- Health Checks: Custom health check endpoints
- Server Monitoring: CPU, memory, disk, network
- Database Monitoring: PostgreSQL performance
- Cache Monitoring: Redis performance
- CDN Monitoring: Static asset delivery
- Fork the repository
- Create a feature branch
- Make your changes
- Write tests
- Run tests and linting
- Create a pull request
- Frontend: ESLint + Prettier
- Backend: PHP CS Fixer + PHPStan
- Testing: Comprehensive test coverage
- Documentation: Update documentation as needed
- Create pull request: Feature β Dev
- Code review: At least 1 reviewer
- CI/CD checks: All checks must pass
- Merge: After approval
- Documentation: Check the documentation first
- Issues: Create GitHub issues for bugs
- Discussions: Use GitHub discussions for questions
- Email: Contact the development team
- Database Connection: Check database credentials
- Environment Variables: Verify all required variables
- File Permissions: Check file and directory permissions
- Cache Issues: Clear cache and restart services
- Authentication System
- UI/UX System
- Basic Infrastructure
- Organization Setup
- Member Management
- Dashboard System
- Attendance System
- Event Management
- Reporting System
- Integration System
- Performance Optimization
- Enterprise Features
This project is licensed under the MIT License - see the LICENSE file for details.
- Laravel Community: For the excellent Laravel framework
- Vue.js Community: For the amazing Vue.js framework
- Quasar Framework: For the comprehensive UI components
- PostgreSQL Community: For the robust database system
Built with β€οΈ for African Churches