Skip to content
/ stick-it Public

Stick-It is a flutter app for posting and sharing locations and images of stickers

License

Notifications You must be signed in to change notification settings

lr101/stick-it

Repository files navigation

Stick-It: Map & Stickers

Codemagic build status contributions welcome Discord Play Store App Store

Description

Stick-It lets you capture where stickers and street art are found, and explore posts from others on an interactive map.

Key features:

  • Groups and community: Share posts with groups and discover new content from friends and others.
  • Interactive map: View stickers and groups on the map and explore local rankings.
  • Fast posting: Take a photo, tag it to a location, and share in seconds.
  • Overview feed: Quickly enable/disable groups to curate your feed.

How does it work?

The Stick-It app is built using the Flutter framework, which allows for cross-platform development on Android, iOS, and web platforms. Here's a high-level overview of how the app works:

Project structure

The app is structured as follows:

  • data: contains data models, repositories, and services. Repositories handles and provides database operations. Services provide business logic for the app, including holding global state values and making api calls.
  • features: contains the app's features (mostly widgets where a route leads to), such as the main screen, group screen, and profile screen. Each directory is split into representation (UI) and data (screen specific logic and states).
  • util: contains utility classes, such as the app's theme, routing, and error handling.
  • widgets: contains reusable widgets that are used across the app. Each directory is split into representation (UI) and data (screen specific logic and states).

Quick start (development)

  1. Prerequisites
  1. Clone and install
# Clone this repository
git clone https://github.com/lr101/stick-it.git
cd stick-it

# Install dependencies
flutter pub get
  1. Generate code (Freezed, Json Serializable, Riverpod)
# Generates all code and resolves any conflicts
dart run build_runner build --delete-conflicting-outputs
  1. Run the app
# Android
flutter run -d android

# iOS (requires macOS)
flutter run -d ios

Optional: API generator setup

If you are working on the API client, clone the API repository next to this project and regenerate API code.

# Clone API repo next to this project
git clone git@github.com:lr101/MonaServerApi.git ../MonaServerApi

# Generate OpenAPI client
flutter pub global activate openapi_generator_cli
openapi-generator generate -i ../MonaServerApi/openapi.yaml -g dart -o ./api

Developer references

Set new icon

  1. change asset path in pubspec.yaml
  2. run: flutter packages pub run flutter_launcher_icons:main

Build Android APK

  1. run: flutter build apk

Release app

The app release in Google Play Store and App Store is managed via Codemagic. The pipeline is triggered when a new commit is pushed to the main branch.

Generate API (summary)

  1. Activate openapi-generator: flutter pub global activate openapi_generator_cli
  2. Run generator: openapi-generator generate -i ../MonaServerApi/openapi.yaml -g dart -o ./api

Troubleshooting

  • iOS minimum version error (Firebase):

    • Error: The plugin "firebase_core" requires iOS 15.0+.
    • Fix: In ios/Podfile, set platform :ios, '15.0' and ensure the post_install hook sets IPHONEOS_DEPLOYMENT_TARGET to 15.0 for all pods. Then run on macOS: flutter clean && flutter pub get && cd ios && pod repo update && pod install.
  • Code generation errors (Freezed/Riverpod):

    • Run: dart run build_runner build --delete-conflicting-outputs.
    • Ensure your files contain the correct part 'file.freezed.dart'; and part 'file.g.dart'; statements when required.
  • Android build issues:

    • Run: flutter clean && flutter pub get.
    • Check your Java SDK and Android SDK versions in Android Studio.

Contributing

Contributions are welcome. Please open an issue for bugs or feature requests, or submit a pull request. For larger changes, open an issue first to discuss the approach.

License

This project is licensed under the terms of the LICENSE file included in the repository.

About

Stick-It is a flutter app for posting and sharing locations and images of stickers

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages