Side-by-side contact account manager for Flutter.
  • C++ 36.9%
  • CMake 29%
  • Dart 21.7%
  • Makefile 4.5%
  • Swift 3.2%
  • Other 4.7%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
emidab 4b76e7a35e chore: scaffold flutter project with lullalink-shaped tooling
Boots an empty Flutter app (contacts_manager, Material 3, Riverpod,
go_router, freezed) with the same skeleton as lullalink: layered lib/
(core, data, domain, presentation), test pyramid layout (unit, widget,
golden, tool), make check gate, pre-commit/commit-msg hooks, coverage
gate and a dormant Forgejo CI workflow.

Scaffolding is intentionally exempt from the commit size limit.
2026-10-06 09:42:59 +00:00
.forgejo/workflows chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
.githooks chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
android chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
ios chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
lib chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
linux chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
macos chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
test chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
tool chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
windows chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
.gitignore chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
.metadata chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
analysis_options.yaml chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
CONTRIBUTING.md chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
Makefile chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
pubspec.lock chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
pubspec.yaml chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00
README.md chore: scaffold flutter project with lullalink-shaped tooling 2026-10-06 09:42:59 +00:00

Contacts Manager

Side-by-side contact account manager for Flutter.

The app keeps several contact accounts side by side in one place: browse and search contacts from every configured account from a single UI. This repository currently ships the project skeleton — clean-architecture layout, theming, routing, and the full verification toolchain — with feature work landing on top of it.

Quickstart

flutter pub get
flutter run                # default platform
flutter run -d linux       # Linux desktop
make hooks                 # install pre-commit / commit-msg git hooks

Verification

make check                 # format-check + analyze + full headless test suite
make test                  # unit + widget + golden + tool tests (headless)
make coverage              # suite with --coverage + line-coverage gate
make update-goldens        # regenerate golden references after UI changes

make check is the one gate: run it before every commit.

Test layout

test/
├── unit/       Business logic & data mapping (no widgets, no platform channels)
├── widget/     Widgets/screens in isolation, headless
├── golden/     Rendered UI pinned to committed reference PNGs
├── fakes/      Fake platform-interface implementations
└── tool/       Tests for the repo's tool/ scripts

Interactive widgets expose stable Keys (from lib/core/constants/app_keys.dart) so tests and automation can drive the app without matching on text.

Architecture

Clean architecture with three layers:

lib/
├── core/           Constants, utilities, extensions
├── data/           Data sources, models, repository implementations
├── domain/         Entities, use cases, repository interfaces
└── presentation/   UI screens, widgets, providers, routing

State management is Riverpod, routing is GoRouter, and immutable models use Freezed / json_serializable (run make gen after changing them).

Contributing

Development workflow, test pyramid, branch naming, and the review loop are documented in CONTRIBUTING.md. Every feature follows it.