Project Tattoo

A modern reimplementation of TAT — the course helper app for Taipei Tech students

What is this?

Project Tattoo is a work-in-progress Flutter app that helps Taipei Tech (NTUT) students access their course schedules and academic information. This is a ground-up reimplementation with a focus on:

  • Modern, maintainable code — Clean architecture and best practices
  • Developer-friendly — Easy for future club members to understand and contribute
  • Concise implementation — No unnecessary complexity

Getting Started

This project uses mise to manage development tools (Flutter, Java, Ruby).

# Install and activate mise (if not already)
# See: https://mise.jdx.dev/getting-started.html

# Install Flutter, Java, and Ruby
mise install

# Install Flutter dependencies
flutter pub get

# Install Ruby dependencies (fastlane)
bundle install

# Run the app
flutter run

Android SDK: Install Android Studio or let Flutter download SDK components automatically on first build.

VS Code users: See .vscode/README.md for project-specific setup instructions.

Contributors: See CONTRIBUTING.md for commit and branch guidelines.

Project Context

This project exists alongside two other implementations:

Project Tattoo aims to take lessons learned from both and create a clean, maintainable foundation for future development.

License

Copyright (C) 2026 NTUT Programming Club (NTUT-NPC)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

See LICENSE for details.

Libraries

components/app_skeleton
components/chip_tab_switcher
components/notices
components/option_entry_tile
components/section_header
database/actions
database/database
database/schema
Database schema definitions for Tattoo.
database/views
i18n/strings.g
Generated file. Do not edit.
i18n/strings_en.g
Generated file. Do not edit.
main
models/course
models/ranking
models/score
models/user
repositories/auth_repository
repositories/course_repository
repositories/preferences_repository
router/animated_shell_container
router/app_router
screens/main/course_table/course_table_screen
screens/main/home_screen
screens/main/profile/profile_card
screens/main/profile/profile_providers
screens/main/profile/profile_screen
screens/main/score/score_providers
screens/main/score/score_screen
screens/main/score/score_screen_actions
screens/main/score/score_view_helpers
screens/welcome/intro_screen
screens/welcome/login_screen
services/course_service
services/i_school_plus_service
services/portal_service
services/student_query_service
utils/fetch_with_ttl
utils/http
utils/localized
utils/shared_preferences