Skip to main content
Neo is a private Flutter package. You add it to a normal Flutter app: create the project with Flutter, then wire Neo into pubspec.yaml, analysis options, and main.dart.
Prefer an agent to do this? Install Neo Skills and run /create-neo-project. The skill detects whether you are in an empty folder, a projects root, or an existing Flutter app, shows a plan, and waits for confirmation before it changes anything.

Prerequisites

  • Flutter installed and on your PATH (Flutter installation guide). Use fvm if the project already has .fvmrc or .fvm/.
  • Access to the Neo repository granted by TVK through the GitHub organization.
  • SSH keys for GitHub, because Neo is pulled over SSH.
If you don’t have access yet, ask your team lead or administrator to contact TVK with your GitHub account email address. Your organization needs an active Neo subscription with confirmed payment before developers can receive repository access.

SSH setup

  1. Check for existing keys: ls -al ~/.ssh
  2. Generate a key if needed: GitHub’s SSH guide
  3. Add the key to your GitHub account

New Flutter project

Create the app with Flutter, then apply Add Neo in the project folder.
Terminal
To create the project in the current empty directory, pass . as the last argument instead of a folder name.

Existing Flutter project

Skip flutter create. Apply Add Neo in the app that already has a pubspec.yaml. Do not replace existing screens with a starter. Keep your current router if it already provides a RouterConfig; NeoApp requires one.

Add Neo

1. Dependency and fonts

Add Neo from Git and register the bundled fonts. Use ref: production unless you have a reason to pin a tag.
pubspec.yaml
Then install packages:
Terminal
You can add the non-Git packages with flutter pub add instead of editing pubspec.yaml by hand. Neo itself must stay a Git dependency.

2. Analyzer

Append these settings to analysis_options.yaml so Riverpod annotations and formatting match Neo’s conventions:
analysis_options.yaml

3. App shell

Replace Flutter’s default MaterialApp / CupertinoApp with NeoInitializer, ProviderScope, and NeoApp. New projects can use this router and welcome screen as-is. Existing projects should keep their screens and only wrap the root.
lib/main.dart
lib/router/app_router.dart
lib/screens/welcome_screen.dart

4. Generate code

Terminal
Then run the app:
Terminal

Next steps

Neo Skills

Let an agent create or migrate the project with /create-neo-project, then keep it current with /update-neo

Neo Docs MCP

Give your assistant live access to these docs while you work

Widgets

Start with Neo’s pre-built components

Sidebar layout

Add navigation once the app shell is running

Troubleshooting

Flutter cannot clone git@github.com:tvkcompany/neo.git. Confirm SSH works with ssh -T git@github.com, that your key is on the GitHub account that has Neo access, and then run flutter pub get again.
Use the variable font paths above (inter_variable.ttf, geist_mono_variable.ttf). Older static .otf filenames are no longer in the package.
From the project root, run dart run build_runner build after flutter pub get. Generated files such as *.g.dart and *.gr.dart are required for the router provider.
Last modified on September 17, 2026