Skip to content

Projects from dicoding.com as a practice in advanced navigation, use of media (audio, images, and video), and use of maps such as Google Map.

License

Notifications You must be signed in to change notification settings

KeidsID/dicoding_story_fl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dicoding_story_fl

Dart version Flutter

Projects from dicoding.com flutter class as a practice in advanced navigation, use of media (audio, images, and video), and use of maps such as Google Maps.

Table Of Contents

Developer Section

Requirements

Dependencies

Main packages that are used as foundation for this project.

Most of them need to generate its utilities with build_runner.

Setup

  1. Install dependencies

    flutter pub get
  2. Intialize git hooks to validate commit messages

    dart run husky install
  3. Create .env file. Use .env.example as a template.

  4. You may also need to change Google Maps API key on android, ios, and web configs if you need to debug the app custom maps.

    Docs: https://pub.dev/packages/google_maps_flutter

  5. Build project environment.

    dart run build_runner build -d # generate code utils
    flutter gen-l10n # generate localizations
  6. Now you're good to go!

    # Check connected devices
    flutter devices
    
    # Check available emulators
    flutter emulators
    
    # Run app
    flutter run -d <device-id>

API Documentation

Project Structures

This project is follow the Clean Architecture principles.

  • /lib -- Source code

    • main.dart -- Application entry point.

    • service_locator.dart -- Service locator to get injectable services.

    • /domain -- Domain layer (Entities and services abstractions).

    • /infrastructures -- Infrastructure layer (Services implementations).

    • /interfaces -- Interfaces layer (Application routes, states, etc).

      • /libs -- Common constants, widgets, providers, and other utilities.

        • /l10n -- Application localizations. Please read the README.md.
      • /modules -- Application routes. Please read the README.md.

    • /use_cases -- Application logic layer.

    • **/libs -- Common constants, or other utilities used by folder it belongs, e.g /lib/libs is global libs, /lib/domain/libs is domain libs, and so on.

Git Conventions

We use Conventional Commits to handle Git commit messages, and Github PR titles.

Look at dangerfile.dart to see supported commit types/scopes (the GitlintConfig class).

Issue Title

<type>(<scopes(optional)>): <content>

Examples:

  • feat: add simple auth
  • bug(interfaces): unresponsive post story page
Commit Message / PR Title
<type>(<scopes(optional)>): <content> ds-<issue-number>

Examples:

  • feat: add auth repo abstraction ds-25
  • fix(interfaces): fix auth repo impl ds-250
  • fix(domain/infrastructures): fix invalid stories request ds-502
Branch Name
<type>-<content>-ds-<issue-number>

Examples:

  • chore-commitlint-ds-1
  • fix-unresponsive-home-page-ds-250

Others

Other documentations that might be useful: