Projects
Post project development records, documents, and notices.

Nitaku
A mobile app that allows you to create a tier table by repeating two choices.
Read more
Read less
NITAKU (Two Choices)
Screen under development
Overview
Let’s create a ranking table together!
Requirements
- Android XX or later
- iOS XX or later
- Chrome XX or later
※ Updates to be reflected after verification.
Usage
To be documented.
References
Sort Create (Developer: @dachikabosu) as reference.
Author
Notes
The following content will be transferred to personal website for project management and will be removed from README.
Feature Specifications
- Generate Ranking Table
- Perform round-robin comparisons (repeatedly choosing between two options) and ultimately generate a ranking table for evaluation targets.
- Designed for ToC use.
- User Authentication
- Google Account Login: Use Firebase Authentication to allow users to log in with Google accounts.
Profile editing and viewing user operation history are possible(currently, not implemented). - Guest Account Login (Anonymous): Use anonymous authentication to allow login without saving user operation history.
Apple Account Login:(currently not implemented).
- Google Account Login: Use Firebase Authentication to allow users to log in with Google accounts.
- Master Management of Themes (Projects)
- Themes (projects) for round-robin comparison are managed in the format of text or
text + image(currently not implemented).
- Themes (projects) for round-robin comparison are managed in the format of text or
Image Management:(currently not implemented).- User-uploaded images are managed with Firebase Storage.
- Cloud Functions may process image compression and resizing as needed.
Development Flow
- Design and Requirements Definition
- Organize feature lists (round-robin comparison, login authentication, project management, etc.).
- Screen design (wireframes, UI/UX design) and selection of technologies to use (Firebase suite, Flutter).
- Environment Setup
- Set up Flutter (Dart) development environment on Windows with Flutter SDK and develop using VS Code.
- Build Flutter (Dart) development environment on MacOS as well (using Docker for MacOS containers).
- Create Firebase projects and configure services such as Authentication, Firestore, Storage, Functions.
- Install necessary Flutter packages (
firebase_auth
,cloud_firestore
,firebase_storage
, etc.).
- User Authentication Implementation
- Implement Google login and Apple login using Firebase Authentication. Web and Apple platforms support Google Account, Apple Account, and Guest login, while Android supports Google Account and Guest login.
- Implement anonymous (guest) login and settings to prevent saving user history.
- Round-Robin Comparison Feature Implementation
- Design for storing project data in Firestore.
- Perform round-robin comparison and ranking logic via Firebase Functions or client-side logic.
- Image Upload Feature Implementation
- Build image upload UI on Flutter side and link with Firebase Storage.
- Add image processing functions using Cloud Functions if needed.
- Testing & Debugging
- Conduct unit tests and UI tests to verify the operation of each feature.
- Validate behavior during guest user usage (e.g., history not being saved).
- Deployment and Operation
- Streamline release procedures for Firebase Hosting and publishing to App Store/Play Store.
- Design monitoring operations using Firebase Analytics and Crashlytics.
Cost Management & Free Plan Utilization with Access Control
- Free Plan Utilization
- Flutter (Dart) itself is free.
- Firebase Spark Plan allows use of Authentication, Firestore, Storage, Functions, Hosting within free quota.
- Access Control During Paid Plan Activation
- Firestore Security Rules: Implement data read/write controls based on user payment status (flag management?).
- Firebase Functions: Check user payment status and show error messages or stop processes if free plan limits are exceeded.
- Flutter App UI Control: For features requiring payment, implement UI restrictions so they are not visible or operable for free users.
Future Implementations
- Revise UI/UX Modernize the look from its current initial state.
- Implement login with Apple Account ※ Requires Apple Developer contracts and others.
- User Management Features Add profile editing, viewing user operation history, and account deletion (control of data linked to deleted accounts as well).
- Add images to themes during creation Implement features using Firebase Storage. While Spark Plan reportedly supports this, the console shows “Upgrade to paid plan,” indicating it might require payment.
- Transition development environment Currently developing primarily in Windows with Flutter SDK installed, but plan to transition to MacOS + Docker environment.
- Publish on Firebase Hosting
- Apply to Google Store (Google Play) and Apple Store
1. Development Structure
Frontend
- Language/Framework: Flutter (Dart)
- UI Components:
Material
orCupertino
widgets - State Management:
Riverpod
/Bloc
- Packages:
firebase_auth
(User authentication)cloud_firestore
(Rank table data management)firebase_storage
(Image management)flutter_hooks
,provider
(State management support)
Backend
- Authentication: Firebase Authentication
- Database: Firestore
- Storage: Firebase Storage
- Cloud Processing: Firebase Functions
- Containerization: Unified development environment with Docker
2. Points for Docker Introduction
- Containerization of Flutter Development Environment
- Use
flutter
official Docker image or build a custom environment. - Local Execution: Utilize
Docker Compose
to manage app and backend. - CI/CD: Integrate Docker-based builds with GitHub Actions.
- Use
- Firebase Development
- Manage
firebase-tools
within the Docker image. - Set up emulator environments for Firestore / Authentication.
- Manage
- Flutter App Deployment
- Web Version: Deploy to
Firebase Hosting
(managed through Docker). - Mobile Version: Build and test using
docker run
.
- Web Version: Deploy to
- Backend Unification
- Containerize Node.js-based Firebase Functions and build a local environment.
- Cloud Functions handle image processing within execution.


None post.
Read less