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:
- NEO-TAT/tat_flutter — The original TAT app
- NTUT-NPC/tat2_flutter (QAQ) — A feature-rich alternative with offline mode, smart session management, and advanced UI
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