AkiraX is an Android app for movie ticket booking and resale, built using Kotlin, Jetpack Compose and Firebase as backend.
- Secure Authentication: Multi-factor login with Google Credential Manager
- Fraud Prevention: Blockchain-inspired ticket verification system
- Seamless Payments: Integrated Cashfree Payment Gateway
- Ticket Resale: Users can resell unused tickets in a secure way
- QR Code Ticketing: Generates scannable QR codes for ticket validation
- Personalized Experience: Fetches movie details from TMDB API
- Smooth UI/UX: Material Design, Shared Element Transitions, Accompanist Pager
- Firebase - Authentication & Firestore database
- Koin - Dependency Injection
- Google Credential Manager - Authentication
- Coil - Image Loading
- Retrofit - API Networking
- ZXing - QR Code Generation
- Accompanist Pager - Smooth Paging
- Cashfree Payment Gateway - Secure Payments
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Markdown
demo.mp4
git clone https://github.com/blizzardOfAce/akirax.git
cd AkiraXSince the google-services.json file is not included in the repository for security reasons, you'll need to set up your own Firebase project:
-
Go to Firebase Console
-
Create a new project (name does not need to match "akirax-21926")
-
Click "Add app" → Select Android icon
-
Enter the package name
com.example.akirax(this must match exactly as inbuild.gradle) -
Set app nickname (optional, e.g., "AkiraX")
-
Get SHA-1 key (required for Google Sign-In):
./gradlew signingReport
Copy SHA-1 from the DEBUG variant
-
Click "Register app" → Download
google-services.json -
Place it inside the
app/directory
Firestore Collections:
- The app uses two collections:
usersandresaleTickets - These do NOT need to be manually created. The app will generate them automatically when first used
- Structure:
users: Stores user detailsresaleTickets: Stores resale ticket info- Each user has a
ticketssubcollection
- Go to Authentication → Sign-in method
- Enable Email/Password and Google Sign-in
- Go to Firestore Database → Create database
- Start in production or test mode (adjust security rules later)
Data Models:
// User Model
data class User(
val uid: String,
val name: String?,
val email: String?,
val photoUrl: String?
)// Ticket Model
data class Ticket(
val eventId: String = "",
val eventName: String = "",
val language: String = "",
val seatNumber: String = "",
val ownerEmail: String = "",
val ticketHash: String = "",
val isForSale: Boolean = false,
val resalePrice: Double? = null,
val imageUrl: String? = null,
val purchaseTimestamp: Long = 0L
)Create a local.properties file in the root directory and add:
TMDB_API_KEY=your_tmdb_api_key
CASHFREE_CLIENT_ID=your_cashfree_client_id
CASHFREE_CLIENT_SECRET=your_cashfree_client_secret
TICKETMASTER_API_KEY=your_ticketmaster_api_key
FIREBASE_WEB_CLIENT_ID=your_firebase_web_client_idGet API keys from:
./gradlew assembleDebugOpen the project in Android Studio, connect a device, and run the app! 🎉
- Add support for multiple languages 🌍
- Implement real-time notifications 🔔
- Enhance UI and features 📲
- Implement AR view for venue seating preview 🎭
Contributions are welcome! Feel free to fork the repository, create a new branch, and submit a pull request. 🚀











