A free, serverless Backend-as-a-Service for Android & Java applications
Clorabase is a lightweight, serverless Backend-as-a-Service (BaaS) designed specifically for Android and Java applications. It leverages GitHub as both a storage and database provider, enabling developers to build apps without managing complex backend infrastructure.
Perfect for small apps, hobby projects, and non-commercial use cases where cost efficiency and simplicity matter most.
A NoSQL-like database storing data as encrypted JSON files in a GitHub repository.
- Nested collections support
- Document-based CRUD operations
- Basic querying capabilities
Two modes of file management:
- Standard uploads (< 50 MB) directly to the repository
- Large file uploads via GitHub Release assets
Remote messaging service for showing custom dialogs:
- Coupon notifications
- Promotional messages
- Simple custom dialogs
Version management utility for apps outside the Play Store:
- Flexible or immediate update prompts
- Controlled via
version.json
- All records encrypted with AES before pushing to GitHub
- Your data stays in your GitHub repository
- Fully free and open-source
- Powered by GitHub's infrastructure
- No subscription or hidden fees
| Language | Usage |
|---|---|
| Kotlin | 44.3% |
| Java | 37.9% |
| HTML | 17.8% |
Add JitPack repository to your build.gradle:
allprojects { repositories { maven { url 'https://jitpack.io' } } }
Add dependency in module build.gradle:
For Android:
implementation 'com.github.Clorabase.Clorabase:Clorabase4A:0.6'For Java:
implementation 'com.github.Clorabase.Clorabase:Clorabase4j:0.6'try { Clorabase clorabase = Clorabase.getInstance("username", "token", "project"); } catch (Exception e) { e.printStackTrace(); }
Database Operations:
ClorastoreCollection db = clorabase.getDatabase(); Map<String, Object> data = new HashMap<>(); data.put("name", "Rahil"); data.put("role", "Admin"); db.collection("users").document("user1") .setData(data) .addOnSuccessListener(v -> Log.d("DB", "Data saved!"));
Storage Operations:
ClorabaseStorage storage = clorabase.getStorage(); ClorabaseStorage imagesDir = storage.directory("images"); imagesDir.uploadFile(inputStream, "avatar.png", new ProgressListener() { @Override public void onProgress(long bytesRead, long totalBytes) { // Track progress } @Override public void onComplete() { Log.d("Storage", "Upload complete!"); } });
π For detailed documentation, visit: Clorabase Wiki
Clorabase requires a GitHub Personal Access Token (PAT):
- Go to Settings β Developer settings β Personal access tokens β Tokens (classic)
- Click Generate new token
- Select the
reposcope (full control of private repositories) - Copy and store the token securely
| Feature | Clorabase | Firebase |
|---|---|---|
| Cost | π° 100% Free | π΅ Tiered / Pay-as-you-go |
| Use Case | Small apps, hobby projects | Enterprise, scalable apps |
| Data Ownership | Your GitHub repo | Google Servers |
| Setup | Very Easy | Moderate to Complex |
| Database | NoSQL | NoSQL |
| In-App Messaging | β Supported | β Supported |
| In-App Updates | β Supported | β Not Available |
| Authentication | β Not Available | β Built-in |
| Scalability | Small to Medium | Enterprise Scale |
- Your priority is staying within budget (completely free)
- Building personal or hobby projects
- App is Android/Java only
- You need a simple data model
- You prefer a DIY approach
We welcome contributions! Whether it's bug reports, feature requests, or code improvements:
- π Report Bugs β GitHub Issues
- π‘ Suggest Features β GitHub Discussions
- π Contribution Guide β See contribution.md
Creator: Rahil Khan (@ErrorxCode)
For personal assistance:
- π§ Email: [email protected]
- π± Instagram: @x1.rahil
If Clorabase helped you build something awesome, please:
- β Star this repository
- π Watch for updates
- π Share with your friends
Your support motivates us to keep improving Clorabase!
