SkillQuest

SkillQuest Week 1 - Project Setup & Architecture

The first week of SkillQuest development: project setup, architecture decisions, and database design.

#architecture#setup#kotlin#android
SkillQuest Week 1 - Project Setup & Architecture

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:

  1. Faster navigation between screens
  2. Better state management
  3. Less memory overhead
  4. 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.