{"id":21377762,"url":"https://github.com/thomassimmer/flutter-actix-app","last_synced_at":"2025-07-13T10:31:53.404Z","repository":{"id":260903550,"uuid":"783880921","full_name":"thomassimmer/Flutter-Actix-App","owner":"thomassimmer","description":"A full-stack multiplatform app template built with Flutter and Actix","archived":false,"fork":false,"pushed_at":"2024-11-03T13:13:52.000Z","size":6510,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-03T14:21:10.859Z","etag":null,"topics":["actix","actix-web","clean-architecture","dart","flutter","full-stack-application","rust"],"latest_commit_sha":null,"homepage":"https://youtu.be/ZCqYWs-lrRM","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thomassimmer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-08T18:57:27.000Z","updated_at":"2024-11-03T13:13:55.000Z","dependencies_parsed_at":"2024-11-03T14:32:25.697Z","dependency_job_id":null,"html_url":"https://github.com/thomassimmer/Flutter-Actix-App","commit_stats":null,"previous_names":["thomassimmer/flutter-actix-app"],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FFlutter-Actix-App","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FFlutter-Actix-App/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FFlutter-Actix-App/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thomassimmer%2FFlutter-Actix-App/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thomassimmer","download_url":"https://codeload.github.com/thomassimmer/Flutter-Actix-App/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225873261,"owners_count":17537581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix","actix-web","clean-architecture","dart","flutter","full-stack-application","rust"],"created_at":"2024-11-22T09:23:36.085Z","updated_at":"2025-07-13T10:31:53.395Z","avatar_url":"https://github.com/thomassimmer.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flutter Actix App\n\nThis project is an application starter pack. The stack used is:\n\n- Front: Flutter, Bloc, go_router, get_it\n- Back: Actix Web, sqlx, jsonwebtoken, argon2, secrecy, totp-rs\n- DB: Postgres\n- Docker: one for back, one for DB\n\nFeatures done:\n\n- signup / login using username / password (no email because my user shouldn't be personally identifiable)\n- logout\n- two factor authentication with one-time passwords\n- account recovery using recovery codes and 2FA/password\n- theme selection (light, dark)\n- language selection (english, french)\n- password update\n- \"about\" page\n- access and refresh tokens stored in secure locations\n- 3 empty tabs ready to be implemented\n- 1 profile tabs ready to be continued\n- snackbar displaying translated error / success / info messages\n\n## Medium articles\n\nI wrote 5 articles about this project on Medium:\n\n- [JWT \u0026 Session Deactivation](https://medium.com/@thomas.simmer/building-a-cross-platform-app-with-flutter-and-rust-jwt-session-deactivation-8ffad3d7ab5a)\n- [Locale Selection](https://medium.com/@thomas.simmer/building-a-cross-platform-app-with-flutter-and-rust-locale-selection-1fb318224129)\n- [Writing Integration Tests](https://medium.com/@thomas.simmer/building-a-cross-platform-app-with-flutter-and-rust-writing-integration-tests-b018d472c19a)\n- [Clean Architecture](https://medium.com/@thomas.simmer/building-a-cross-platform-app-with-flutter-and-rust-clean-architecture-193c26599154)\n- [A Beginner’s Journey](https://medium.com/@thomas.simmer/building-a-cross-platform-app-with-flutter-and-rust-a-beginners-journey-92cbb893c2f9)\n\n## Context\n\nI plan to develop a real app, but it will take a lot of time, and due to personal reasons, there are chances it will never be released. I don't want to spoil here what this app will be about, but you can find some hints in this project. Before starting this app, I wanted to create a starter template to share my discoveries with people who learn these technologies.\n\nI tried implementing clean architecture, but do not consider me an expert, I have always worked on small projects that didn't require it.\n\nThe frontend has no tests (feel free to add some!).\nThe backend has 45 tests covering most of the code.\n\n## Demo Video\n\nYou can click on it to watch, it's a youtube link.\n\n\u003cdiv style=\"text-align: center;\"\u003e\n    \u003ca href=\"https://youtu.be/ZCqYWs-lrRM\" target=\"_blank\"\u003e\n        \u003cimg src=\"./docs/screenshots/1.png\" alt=\"Demo\" width=\"200\"/\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n## Screenshots\n\n\u003cdiv style=\"display: flex; justify-content: space-between; align-items: center;\"\u003e\n    \u003cimg src=\"./docs/screenshots/1.png\" alt=\"drawing\" width=\"200\"/\u003e\n    \u003cimg src=\"./docs/screenshots/9.png\" alt=\"drawing\" width=\"200\"/\u003e\n    \u003cimg src=\"./docs/screenshots/24.png\" alt=\"drawing\" width=\"500\"/\u003e\n    \u003cimg src=\"./docs/screenshots/25.png\" alt=\"drawing\" width=\"500\"/\u003e\n\u003c/div\u003e\n\n## Installation and development\n\n```bash\n# Start by running db container\ndocker-compose up -d db\n# Then back\ndocker-compose up -d backend\n```\n\n### Backend commands\n\n#### To be able to use sqlx cli tools\n\n```bash\ncargo install sqlx-cli --no-default-features --features postgres\n```\n\n#### To create a new migration file\n\n```bash\nsqlx migrate add name_of_your_migration\nsqlx migrate run\n```\n\n### Run locally on an external device\n\nChange every occurrence of 192.168. somewhere in the code to match your local IP address.\n\nCreate frontend/.env on the model of frontend/.env.template changing the variable to match your situation (API_BASE_URL for instance).\n\n### Run on Android :\n\nMake sure to follow the section ## Run locally on an external device first.\n\nTurn on Developer Options and USB debugging “File sharing”.\n\nDeveloper Options \u003e Select USB Configuration \u003e Change it from “File Transfer” (default option) to Charging”.\n\nThe phone will ask if you want to always allow USB debugging from this device.\n\nSay yes.\n\nInstall android-studio from their web page.\n\nCreate a fake project.\n\nFrom android-studio, Settings -\u003e SDK Manager -\u003e Languages \u0026 Frameworks -\u003e Android SDK -\u003e SDK Tools\n\nCheck Android SDK Command-line tools box.\n\nClick Apply.\n\nTo check everything is fine: flutter doctor --verbose\n\nTo build the apk: flutter build apk --flavor dev --release\n\nTo install on device: flutter install --flavor dev\n\n## Sources of inspiration\n\n- Install localizations on ios: https://medium.com/@gauravswarankar/internationalizing-flutter-apps-a2b82e804ca6\n\n- Flutter, blocs, clean architecture: https://github.com/Yoga3911/flutter_bloc_clean_architecture/tree/master\n\n- Flutter, themes, clean architecture: https://github.com/hungps/flutter_pokedex\n\n## And now?\n\nFeel free to create issues, pull requests, and ask me anything about this project. It's not guaranteed that I will keep working on this, but who knows?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomassimmer%2Fflutter-actix-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomassimmer%2Fflutter-actix-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomassimmer%2Fflutter-actix-app/lists"}