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: x0.khanrahil@gmail.com
- 📱 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!
