A modern, secure camera system featuring real-time recording, device management, and cloud integration. Built with Go backend services and Android mobile application.
- Download the latest APK from Releases
- Install on your Android device (API 24+)
- Configure your backend server URL
- Start recording or viewing devices
- Clone:
git clone [repository-url] - Backend:
cd SpikeCam/spike-cam-backend && go run ./cmd/spikecam - Mobile: Open
SpikeCam/spike-cam-mobile-appin Android Studio - CI & Release: Use unified scripts in
./scripts/(called by.github/workflows/ci.ymlandrelease.yml)
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Android App │ │ Go Backend │ │ Infrastructure │
│ (Kotlin) │◄──►│ (REST API) │◄──►│ (PostgreSQL) │
│ │ │ │ │ │
│ • Recording │ │ • JWT Auth │ │ • Systemd │
│ • Viewing │ │ • Device Mgmt │ │ • TLS/HTTPS │
│ • Device Mgmt │ │ • Event Storage │ │ • Auto-deploy │
│ • OAuth Login │ │ • WebSocket │ │ • Monitoring │
└─────────────────┘ └─────────────────┘ └─────────────────┘
SpikeCam/
├── spike-cam-backend/ # Go REST API server
│ ├── cmd/spikecam/ # Application entry point
│ ├── internal/ # Private business logic
│ │ ├── auth/ # JWT & OAuth authentication
│ │ ├── handlers/ # HTTP request handlers
│ │ ├── models/ # Database models
│ │ ├── server/ # WebSocket server
│ │ └── shared/ # Common protocols
│ ├── docs/ # Swagger API documentation
│ └── scripts/ # Deployment & testing
│
├── spike-cam-mobile-app/ # Android application
│ ├── app/src/main/java/ # Kotlin source code
│ ├── app/src/main/res/ # UI resources & layouts
│ └── documentation/ # Mobile app documentation
│
├── spike-cam-infrastructure/ # Deployment configs
├── scripts/ # Build & release automation
├── releases/ # Published APK files
└── documentation/ # Project-wide documentation
- Real-time camera recording with motion detection
- Live streaming between devices via WebSocket
- Event storage with timestamp and metadata
- Multi-device support (recorder/viewer roles)
- JWT-based authentication with refresh tokens
- Google OAuth integration for seamless sign-in
- TLS/HTTPS support for production deployments
- Encrypted local storage on mobile devices
- Device registration and status tracking
- Health monitoring with built-in diagnostics
- Auto-deployment scripts for EC2 and local servers
- Comprehensive logging and error handling
- Material Design 3 with modern UI/UX
- Background recording service
- Real-time notifications and status updates
- Offline capability with local event storage
- Framework: Native Go with Gorilla WebSocket
- Database: SQLite (dev) / PostgreSQL (prod)
- Authentication: JWT with Google OAuth
- Documentation: Swagger/OpenAPI
- Deployment: Systemd service on Linux
- Language: Kotlin with Architecture Components
- UI: Material Design 3 with ViewBinding
- Architecture: MVVM pattern
- Storage: Room database with encrypted preferences
- Networking: OkHttp with authenticated requests
- Cloud: AWS EC2 with automated deployment
- Database: PostgreSQL with auto-migration
- Security: TLS certificates and secure key management
- Monitoring: Health checks and service monitoring
- OS: Linux (Ubuntu 20.04+ recommended)
- Runtime: Go 1.21+
- Database: PostgreSQL 12+ (production)
- Memory: 512MB minimum, 2GB recommended
- Storage: 1GB minimum for logs and database
- Android: 7.0 (API 24) or higher
- RAM: 2GB minimum, 4GB recommended
- Storage: 100MB free space
- Camera: Required for recorder mode
- Network: WiFi or mobile data
# Clone repository
git clone [repository-url]
cd SpikeCam
# Set up environment
cp scripts/.env.example scripts/.env
# Edit scripts/.env with your configuration
# CI (locally)
bash ./scripts/ci-backend.sh
bash ./scripts/ci-mobile.sh
# Release builds (locally)
bash ./scripts/release-backend.sh
bash ./scripts/release-apk.sh- Backend: See Backend README
- Mobile: See Mobile App README
- Infrastructure: Check deployment scripts
- Prerequisites: Go 1.21+, Android Studio, PostgreSQL
- Clone:
git clone [repository-url] - Backend:
cd SpikeCam/spike-cam-backend && go mod download - Mobile: Open Android project in Android Studio
- Test: Run
./scripts/test_project_flow.sh
- Go: Use
go fmt,go vet, andgolangci-lint - Kotlin: Follow Android/Kotlin style guide
- Testing: Maintain >80% coverage
- Documentation: Update docs with any API changes
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Make changes and add tests
- Commit:
git commit -m 'feat: add amazing feature' - Push:
git push origin feature/amazing-feature - Open Pull Request
This project is licensed under the MIT License. See LICENSE file for details.
- Documentation: Check the
/documentationfolders - Issues: Report bugs via GitHub Issues
- Discussions: Use GitHub Discussions for questions
- Wiki: Check project wiki for troubleshooting
SpikeCam - Modern security camera system with real-time streaming and device management.