Skip to main content
The TecNM Control Escolar app follows a single-activity architecture using Jetpack Compose and Navigation Compose. This modern Android architecture pattern provides a clean, maintainable codebase with clear separation of concerns.

Project Structure

The app is organized into logical packages following Android best practices:
app/src/main/java/com/example/appcontrolescolar/
├── MainActivity.kt
├── data/
│   ├── model/
│   │   ├── Student.kt
│   │   ├── ClassSession.kt
│   │   └── Building.kt
│   └── FakeData.kt
├── navigation/
│   ├── AppScreens.kt
│   └── AppNavigation.kt
└── ui/
    ├── components/
    │   └── BottomBar.kt
    ├── screens/
    │   ├── HomeScreen.kt
    │   ├── ScheduleScreen.kt
    │   ├── MapScreen.kt
    │   └── ProfileScreen.kt
    └── theme/
        ├── Color.kt
        ├── Theme.kt
        └── Type.kt

Architecture Layers

Presentation Layer (UI)

The presentation layer is built entirely with Jetpack Compose and includes:
  • Screens: Full-screen composables for each navigation destination
  • Components: Reusable UI components like BottomBar
  • Theme: Material Design 3 theming configuration

Data Layer

Currently uses FakeData to simulate backend responses:
  • Models: Data classes representing domain entities
  • FakeData: Mock data provider for development
The data layer will be migrated to Supabase in a future release for real backend integration.
Manages screen navigation using Navigation Compose:
  • AppScreens: Sealed class defining all navigation routes
  • AppNavigation: NavHost setup and route-to-screen mapping

Single-Activity Architecture

The app uses a single MainActivity that hosts all screens through Compose navigation:
MainActivity.kt
package com.example.appcontrolescolar

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import com.example.appcontrolescolar.navigation.AppNavigation
import com.example.appcontrolescolar.ui.theme.AppControlEscolarTheme

class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {

            AppControlEscolarTheme {

                AppNavigation()

            }

        }
    }
}

Key Benefits

Simplified Navigation

All navigation is handled through Compose, eliminating fragment transactions

Shared State

Easy state sharing between screens without complex fragment communication

Lifecycle Management

Single activity lifecycle simplifies state preservation and restoration

Modern UI

Full Compose UI with Material Design 3 components

Technology Stack

  • Language: Kotlin
  • UI Framework: Jetpack Compose
  • Navigation: Navigation Compose
  • Design System: Material Design 3
  • Minimum SDK: 21 (Android 5.0 Lollipop)

Current Features

The app currently implements four main screens:
ScreenRoutePurpose
HomehomeShows current class and upcoming schedule
SchedulescheduleDisplays full day schedule with colored cards
MapmapCampus building search and location
ProfileprofileStudent information and academic details

Future Enhancements

1

Backend Integration

Connect to Supabase for real data persistence
2

Authentication

Implement student login with control number
3

QR Attendance

Add QR code scanner for class attendance tracking
4

Grades Module

Display student grades and academic history
5

Real Campus Map

Integrate actual campus map with location services