Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
933bcc3
chore: add repository gitignore
sanskarIN Aug 19, 2026
532763c
chore: add editor configuration
sanskarIN Aug 19, 2026
d76d907
build(core): add Rust crate manifest
sanskarIN Aug 19, 2026
4ba13df
feat(core): add conversion error model
sanskarIN Aug 19, 2026
9e845d9
feat(core): add built-in unit catalog
sanskarIN Aug 19, 2026
b991232
feat(core): implement high precision conversion engine
sanskarIN Aug 19, 2026
020551c
feat(core): add validated custom unit formulas
sanskarIN Aug 19, 2026
2ed9e14
feat(core): expose public conversion API
sanskarIN Aug 19, 2026
24c4665
feat(cli): add UnitFlow command line converter
sanskarIN Aug 19, 2026
99d1f61
test(core): add conversion regression coverage
sanskarIN Aug 19, 2026
45605ef
build(app): add Flutter application manifest
sanskarIN Aug 19, 2026
f11052d
chore(app): enable strict Dart analysis
sanskarIN Aug 19, 2026
0db4782
feat(app): add unit domain model
sanskarIN Aug 19, 2026
6d9822b
feat(app): add offline unit catalog
sanskarIN Aug 19, 2026
4c9d3ff
feat(app): add conversion service and formatting
sanskarIN Aug 19, 2026
c1c924f
feat(app): add conversion application state
sanskarIN Aug 19, 2026
96eb43f
feat(app): add searchable unit picker
sanskarIN Aug 19, 2026
b84bb38
feat(app): add batch conversion dialog
sanskarIN Aug 19, 2026
2a0114f
feat(app): add conversion display settings
sanskarIN Aug 19, 2026
22d0fbe
feat(app): add recent conversion history
sanskarIN Aug 19, 2026
5bb8ec3
feat(app): add primary converter interface
sanskarIN Aug 19, 2026
614fc58
feat(app): build responsive UnitFlow home screen
sanskarIN Aug 19, 2026
409d3bc
feat(app): add UnitFlow application entrypoint
sanskarIN Aug 19, 2026
0891962
test(app): add conversion engine tests
sanskarIN Aug 19, 2026
4fc2034
test(app): add primary UI smoke test
sanskarIN Aug 19, 2026
a9bc7a2
fix(app): correct temperature branching and precision clamps
sanskarIN Aug 19, 2026
4ead65b
fix(app): normalize integer precision handling
sanskarIN Aug 19, 2026
ddf4167
chore(app): focus static analysis on correctness
sanskarIN Aug 19, 2026
0650cce
build: add Unix Flutter platform bootstrap
sanskarIN Aug 19, 2026
6edbc3d
build: add Windows Flutter platform bootstrap
sanskarIN Aug 19, 2026
ade4dd0
chore: document preferred commit identity
sanskarIN Aug 19, 2026
f663342
docs: add contribution guide
sanskarIN Aug 19, 2026
c500ea5
docs: add security policy
sanskarIN Aug 19, 2026
1214f3a
docs: add support channels
sanskarIN Aug 19, 2026
2e85c38
docs: add contributor code of conduct
sanskarIN Aug 19, 2026
8c82472
docs: add initial changelog
sanskarIN Aug 19, 2026
7dab5e4
docs: add UnitFlow roadmap
sanskarIN Aug 19, 2026
13279e7
docs: document UnitFlow architecture
sanskarIN Aug 19, 2026
28ba3f0
docs: add development setup guide
sanskarIN Aug 19, 2026
aefe6d7
docs: add testing strategy
sanskarIN Aug 19, 2026
636309d
docs: add release checklist
sanskarIN Aug 19, 2026
ea8d5c6
docs: add accessibility requirements
sanskarIN Aug 19, 2026
5b89447
docs: add performance budgets
sanskarIN Aug 19, 2026
23daec7
ci: add Rust and Flutter validation workflow
sanskarIN Aug 19, 2026
34756c9
chore: add bug report template
sanskarIN Aug 19, 2026
87ce5fd
chore: add feature request template
sanskarIN Aug 19, 2026
e1e42d7
chore: add pull request template
sanskarIN Aug 19, 2026
699f1fe
docs(app): add frontend development guide
sanskarIN Aug 19, 2026
adba694
docs(core): add Rust core guide
sanskarIN Aug 19, 2026
0426086
build: add common developer commands
sanskarIN Aug 19, 2026
49b93d0
docs: add project work journal
sanskarIN Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2

[*.rs]
indent_size = 4

[*.md]
trim_trailing_whitespace = false
7 changes: 7 additions & 0 deletions .gitconfig.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[user]
name = Sanskar
email = sanskarin@outlook.in

# Apply locally with:
# git config user.name "Sanskar"
# git config user.email "sanskarin@outlook.in"
56 changes: 56 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Bug report
description: Report a reproducible UnitFlow problem
title: "bug: "
labels: [bug]
body:
- type: markdown
attributes:
value: Thanks for helping improve UnitFlow. Remove private information before submitting logs or screenshots.
- type: textarea
id: summary
attributes:
label: What happened?
description: Describe the problem and what you expected instead.
validations:
required: true
- type: input
id: version
attributes:
label: UnitFlow version or commit
validations:
required: true
- type: input
id: platform
attributes:
label: Platform and OS
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Select ...
2. Enter ...
3. Observe ...
validations:
required: true
- type: textarea
id: conversion
attributes:
label: Conversion details
description: Include source unit, destination unit, input, actual output, and expected output when relevant.
- type: textarea
id: logs
attributes:
label: Logs or screenshots
description: Optional. Remove secrets and personal information.
- type: checkboxes
id: checks
attributes:
label: Checks
options:
- label: I searched existing issues for duplicates.
required: true
- label: I removed secrets and private information.
required: true
45 changes: 45 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Feature request
description: Suggest an improvement for UnitFlow
title: "feat: "
labels: [enhancement]
body:
- type: textarea
id: problem
attributes:
label: Problem or opportunity
description: What user need would this solve?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
description: Describe the behavior, UI, units, or workflow you would like.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
description: Optional alternatives or tradeoffs.
- type: dropdown
id: area
attributes:
label: Area
options:
- Rust core
- Flutter UI
- Unit catalog
- Accessibility
- Documentation
- Build and release
- Other
validations:
required: true
- type: checkboxes
id: checks
attributes:
label: Checks
options:
- label: I searched existing issues for similar requests.
required: true
21 changes: 21 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## Summary

Describe the problem and the focused change that solves it.

## Validation

- [ ] Rust checks/tests pass when Rust code changed.
- [ ] Flutter analyze/tests pass when Flutter code changed.
- [ ] Conversion constants/formulas have regression coverage when changed.
- [ ] UI changes were checked on narrow and wide layouts.
- [ ] Accessibility implications were reviewed.
- [ ] Documentation/changelog were updated when needed.
- [ ] No secrets or private information are included.

## Screenshots

Add screenshots for meaningful UI changes when useful.

## Notes / limitations

Call out migrations, compatibility concerns, follow-up work, or known limitations.
52 changes: 52 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: CI

on:
push:
branches: [main]
pull_request:
branches: [main]

permissions:
contents: read

jobs:
rust:
name: Rust core
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@stable

- name: Cargo check
run: cargo check --manifest-path rust/Cargo.toml --all-targets

- name: Cargo test
run: cargo test --manifest-path rust/Cargo.toml

flutter:
name: Flutter app
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
cache: true

- name: Resolve packages
working-directory: app
run: flutter pub get

- name: Analyze
working-directory: app
run: flutter analyze

- name: Test
working-directory: app
run: flutter test
30 changes: 30 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Rust
/target/
rust/target/
Cargo.lock

# Flutter / Dart
.dart_tool/
.packages
.pub-cache/
.pub/
build/
app/.flutter-plugins
app/.flutter-plugins-dependencies
app/.metadata

# IDE
.idea/
.vscode/
*.iml

# OS
.DS_Store
Thumbs.db

# Local files
.env
.env.*
!.env.example
coverage/
*.log
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Changelog

All notable UnitFlow changes are documented here.

## [Unreleased]

### Added

- Rust high-precision conversion core using decimal arithmetic.
- Searchable catalog covering length, mass, temperature, time, area, volume, speed, data, pressure, energy, power, and angle.
- Explicit rounding options in the Rust engine.
- Validated affine custom-unit formulas.
- Rust command-line converter and unit catalog listing.
- Flutter Material 3 frontend with responsive layout.
- Searchable unit picker, category navigation, swap, copy, favorites, history, batch conversion, scientific notation, and precision controls.
- Educational conversion explanations and accessibility semantics.
- Cross-platform Flutter bootstrap scripts.
- Rust and Flutter test suites.
- CI, security, contribution, support, release, accessibility, performance, and architecture documentation.

### Notes

The Rust crate is the authoritative precision-focused engine. The current Flutter UI uses its dependency-free Dart adapter for immediate cross-platform execution while the documented native/WASM bridge remains a future integration milestone.

## [0.1.0] - 2026-08-19

Initial public development baseline.
19 changes: 19 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Code of Conduct

UnitFlow welcomes respectful, constructive collaboration.

## Our standards

Expected behavior includes:

- Be respectful and patient in technical discussions.
- Give actionable feedback focused on code, design, documentation, and outcomes.
- Welcome contributors with different experience levels and backgrounds.
- Respect privacy and do not publish personal information without permission.
- Credit prior work and sources appropriately.

Unacceptable behavior includes harassment, discrimination, threats, deliberate disruption, impersonation, publishing private information, or repeated hostile conduct.

## Enforcement

Report conduct concerns privately to `sanskarin@outlook.in`. Maintainers may remove content, restrict participation, close discussions, or take other proportionate moderation actions to protect the project community.
63 changes: 63 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Contributing to UnitFlow

Thanks for improving UnitFlow.

## Development setup

1. Install a current stable Rust toolchain and Flutter SDK.
2. Clone the repository.
3. Configure the preferred commit identity when appropriate:

```bash
git config user.name "Sanskar"
git config user.email "sanskarin@outlook.in"
```

4. Bootstrap Flutter platform folders when needed:

```bash
./tool/bootstrap_platforms.sh
```

On Windows PowerShell:

```powershell
./tool/bootstrap_platforms.ps1
```

## Before opening a pull request

Run the complete quality suite:

```bash
cargo fmt --manifest-path rust/Cargo.toml --check
cargo clippy --manifest-path rust/Cargo.toml --all-targets --all-features -- -D warnings
cargo test --manifest-path rust/Cargo.toml

cd app
flutter analyze
flutter test
```

## Change expectations

- Keep conversion factors traceable and documented.
- Add regression tests for conversion changes.
- Avoid network requirements for static unit conversions.
- Preserve accessibility labels and keyboard-friendly flows.
- Keep UI logic separate from conversion logic.
- Update `CHANGELOG.md` and `what_changed.md` for meaningful user-facing changes.
- Never commit secrets, private keys, tokens, or credentials.

## Commit style

Use focused commits with descriptive Conventional Commit-style subjects, for example:

- `feat(core): add pressure conversions`
- `fix(app): preserve input after unit swap`
- `test(core): cover affine temperature conversions`
- `docs: explain release checklist`

## Pull requests

Explain the problem, implementation, validation performed, screenshots for UI changes when useful, and any remaining limitations.
18 changes: 18 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.PHONY: rust-check rust-test flutter-get flutter-analyze flutter-test test

rust-check:
cargo check --manifest-path rust/Cargo.toml --all-targets

rust-test:
cargo test --manifest-path rust/Cargo.toml

flutter-get:
cd app && flutter pub get

flutter-analyze:
cd app && flutter analyze

flutter-test:
cd app && flutter test

test: rust-check rust-test flutter-get flutter-analyze flutter-test
Loading