|
| 1 | +# Project Overview |
| 2 | + |
| 3 | +**PSLab App** is a Flutter cross-platform application for performing |
| 4 | +scientific experiments with the Pocket Science Lab (PSLab) open-hardware |
| 5 | +platform. It provides instruments like oscilloscope, multimeter, wave |
| 6 | +generator, logic analyzer, and various sensor interfaces. |
| 7 | + |
| 8 | +## Tech Stack |
| 9 | + |
| 10 | +- **Framework**: Flutter (stable channel) |
| 11 | +- **Language**: Dart |
| 12 | +- **State Management**: Provider pattern |
| 13 | +- **Dependency Injection**: GetIt (service locator pattern) |
| 14 | +- **Supported Platforms**: Android (primary), iOS, Linux, macOS, Windows, Web |
| 15 | + |
| 16 | +## Repository Structure |
| 17 | + |
| 18 | +```text |
| 19 | +pslab-app/ |
| 20 | +├── android/ # Android-specific platform code |
| 21 | +├── ios/ # iOS-specific platform code |
| 22 | +├── linux/ # Linux-specific platform code |
| 23 | +├── macos/ # macOS-specific platform code |
| 24 | +├── windows/ # Windows-specific platform code |
| 25 | +├── web/ # Web-specific platform code |
| 26 | +├── lib/ # Code shared by all platforms |
| 27 | +│ ├── communication/ # Hardware communication layer (USB, sensors, peripherals) |
| 28 | +│ ├── providers/ # State management (Provider pattern, ~32 files) |
| 29 | +│ ├── view/ # UI screens and widgets |
| 30 | +│ ├── models/ # Data models |
| 31 | +│ ├── theme/ # App theming and colors |
| 32 | +│ ├── l10n/ # Localization (i18n) files |
| 33 | +│ ├── others/ # Utilities and helpers |
| 34 | +│ ├── constants.dart # App-wide constants |
| 35 | +│ └── main.dart # App entry point |
| 36 | +├── test/ # Unit tests |
| 37 | +├── test_integration/# Integration tests |
| 38 | +├── assets/ # Images, icons, and other assets |
| 39 | +├── .github/ |
| 40 | +│ ├── workflows/ # CI/CD workflows |
| 41 | +│ └── actions/ # Reusable GitHub Actions |
| 42 | +├── scripts/ # Build and deployment scripts |
| 43 | +└── pubspec.yaml # Dependencies and project configuration |
| 44 | +``` |
| 45 | + |
| 46 | +## Coding Standards |
| 47 | + |
| 48 | +- Adhere to the coding style described in <https://dart.dev/effective-dart/style>. |
| 49 | +- Adhere to the SOLID design principles described in <https://simple.wikipedia.org/wiki/SOLID_(object-oriented_design)>. |
| 50 | +- Adhere to Object-Oriented Design best practices described in <http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod>. |
| 51 | +- Keep in mind the architecture recommendations described in <https://docs.flutter.dev/app-architecture/guide>. |
| 52 | + |
| 53 | +## Commit Style |
| 54 | + |
| 55 | +- Adhere to the commit style described in the file `commitstyle.md` in |
| 56 | +the `docs` folder of this project. |
| 57 | + |
| 58 | +## UI guidelines |
| 59 | + |
| 60 | +- The UI of the app must be consistent |
| 61 | +- The UI of the app should adhere to the best practices for adaptive design described |
| 62 | +in <https://docs.flutter.dev/ui/adaptive-responsive/best-practices>. |
0 commit comments