Skip to content

HamaBTW/TacheLik_androidApp

Repository files navigation

📱 Tache-Lik (Android)

Tache-Lik Logo

Educational Android app with courses, quizzes, AI-assisted features, and real-time capabilities.

Build Platform Kotlin License


🧠 Project Description

Tache-Lik is an educational mobile application built with Kotlin and Jetpack Compose. It provides a modern learning experience with:

  • Student learning flows (explore courses, watch content, take quizzes)
  • Teacher tooling (course content management, analytics)
  • Admin operations (user/request management)
  • Real-time features (Socket.IO-based session handling + chat)
  • AI-assisted features (quiz generation, reel generation)

Purpose: provide a single mobile experience that combines learning content, assessment (quizzes), interaction, and teacher/admin workflows.

Target users:

  • 🎓 Students
  • 🧑‍🏫 Teachers
  • 🛡️ Admins

iOS client: see TacheLik iOS


✨ Features

  • 🔐 Authentication (sign in / sign up)
  • ✅ Email verification flow
  • 🔁 Password reset flow
  • 🧑‍🎓 Student home & course browsing
  • 🧪 Quizzes + attempts + results
  • 🏅 Badges + leaderboard
  • 💬 Chat (list + detail)
  • 🧑‍🏫 Teacher dashboard + analytics
  • 🛡️ Admin dashboard
  • 🌓 Dark mode (theme state stored and applied globally)
  • 🧠 AI features (quiz generation, reels generation)
  • ⚠️ Session termination handling (multi-device login)

🔧 Tech Stack

Category Choice
Language Kotlin
UI Jetpack Compose + Material 3
Architecture MVVM (View → ViewModel → Repository)
DI Hilt
Navigation Navigation Compose
Networking Retrofit + OkHttp
Real-time Socket.IO client
Local storage DataStore (JWT token) + local cache (user)
Images Coil
Video Media3 (ExoPlayer)
Testing JUnit + AndroidX test (basic unit + instrumented tests)

🧱 Architecture Overview

The project follows an MVVM structure with a clear separation of responsibilities:

UI (Jetpack Compose Screens)
   ↓ user actions
ViewModels (StateFlow, business/UI state)
   ↓ calls
Repositories (orchestrate API calls, caching, sockets)
   ↓
Data sources (Retrofit API, DataStore, local cache)

Key implementation details:

  • Hilt provides dependencies (Retrofit/OkHttp, repositories, data sources).
  • OkHttp interceptor injects Authorization: Bearer <token> automatically for authenticated calls.
  • Auto-login runs at startup: token → decode JWT → fetch user → route based on role.
  • Global session handler listens for multi-session termination and forces logout + navigation reset.

🗂️ Project Structure (Beginner-Friendly)

The main app module lives under app/src/main/java/tn/tachelik/tachelik_androidapp/.

Common folders you’ll work with:

  • view/ → Jetpack Compose screens + navigation graph
  • viewmodel/ → state holders + UI logic (StateFlow)
  • repository/ → data orchestration (API + cache + socket)
  • model/ → Retrofit DTOs, domain-ish models, managers (token/socket)
  • di/ → Hilt modules (network, singletons)
  • util/ → helpers (validators, JWT decoder, network monitoring, error formatting)
  • ui/theme/ → Material 3 theme, colors, typography

🚀 Installation & Setup

1) Prerequisites

  • Android Studio (latest stable recommended)
  • JDK 11 (the project is configured with Java 11 compatibility)
  • Android SDK (Compile SDK 36)

2) Clone and open

  • Clone the repository
  • Open TacheLik_androidApp/ in Android Studio

3) Configure environment (MANDATORY)

This project reads runtime endpoints from local.properties (ignored by git).

  1. Create or edit local.properties at the root of TacheLik_androidApp/
  2. Add:
# Backend API (must end with /api/)
BASE_URL=http://10.0.2.2:3001/api/

# Socket.IO server base (no /api/)
SOCKET_URL=http://10.0.2.2:3001

Notes:

  • Emulator loopback uses 10.0.2.2.
  • On a physical device, replace with your computer’s LAN IP.

4) Sync + run

  • Gradle Sync
  • Run the app configuration on an emulator/device

📚 Full Documentation

A complete documentation system is available in the docs/ folder.

Recommended reading order:

  1. docs/README.md
  2. docs/01-project-overview.md
  3. docs/02-requirements-and-setup.md
  4. Then continue sequentially (03-...21-...)

✅ Best Practices (Team Standards)

These standards are documented in more detail in docs/README.md and docs/20-contribution-guide.md.

  • Documentation: one feature = one doc update; keep docs versioned with code changes.
  • Naming: consistent, descriptive, and avoid abbreviations.
  • Commit messages: Conventional Commits recommended (e.g., feat: add quiz attempt screen).
  • Branching: main (stable) + feature branches (feature/<topic>).
  • Code readability: prefer small composables, pure UI functions, and explicit UI state.
  • Scalability: keep networking and data logic out of composables; repositories are the boundary.

👥 Developers & Contributors

Links are intentionally set as replaceable placeholders so you can fill in real profiles later. This README contains no raw URLs. Update the link targets in the “Link Targets” section below.


🙏 Mentor Acknowledgment

Special thanks to our mentor Fakhreddine Ghalleb for guiding the project’s architecture, best practices, and engineering standards.

👉 Mentor Fakhreddine Ghalleb's GitHub Profile


📦 License

This project is released under the MIT License. See LICENSE.


About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages