SkillQuest Week 1 - Project Setup & Architecture
This week I started development on SkillQuest, the skill tracking app that helps users master their skills.
What happened?
Project Setup
The foundation has been laid for the Android app:
- Kotlin as the primary programming language
- Jetpack Compose for the UI
- Room Database for local data storage
- MVVM architecture for clean code separation
Architecture Decisions
After research, I chose a single-activity architecture with Compose Navigation. This gives us:
- Faster navigation between screens
- Better state management
- Less memory overhead
- Modern Android development pattern
Database Schema
The initial database schema has been set up for:
// Skill entity
@Entity(tableName = "skills")
data class Skill(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val name: String,
val category: String,
val targetHours: Int,
val currentHours: Float = 0f,
val createdAt: Long = System.currentTimeMillis()
)
// Focus session entity
@Entity(tableName = "focus_sessions")
data class FocusSession(
@PrimaryKey(autoGenerate = true)
val id: Long = 0,
val skillId: Long,
val duration: Long,
val startTime: Long,
val endTime: Long,
val notes: String? = null
)
Challenges
Challenge 1: Database Migrations
Room Database migrations can be complex. I learned to have a good migration strategy from the start.
Solution: Use fallbackToDestructiveMigration() during development, and implement proper migrations later for production.
Challenge 2: Compose State Management
State management in Compose is different from traditional Android development.
Solution: Use ViewModel with StateFlow for reactive updates to the UI.
Next Week
Planning for week 2:
- Implement skill creation screen
- Build skill list overview
- Focus timer basic functionality
- Statistics tracking setup
Stay tuned for more updates!
Geschreven door Hans
Comments
Sign in with GitHub to leave a comment. Comments are powered by Giscus.
You might also like

Fixing SkillQuest Version Management - From Hardcoded to Automated
Automated version management with semantic versioning and build date tracking - no more manual version updates required.

SkillQuest Theme System: From Crash to Consistent
How database denormalization bit us - and how we fixed theme unlocks and selection crashes with PostgreSQL triggers.

SkillQuest Production Readiness - Enterprise Error Monitoring & Critical Fixes
Implemented Sentry error monitoring, resolved database synchronization issues, and completed critical production fixes across 19 commits.
