Skip to content

yun-dev-cmd/our_spring_days

Our Spring Days

한국어 README

Flutter Dart Firebase Google Maps

Our Spring Days is a Flutter travel memory map for couples who travel with a dog. It brings routes, pet-friendly places, photos, partner markers, and mission records into one app flow.

Most map apps are good at place search, and most album apps are good at storing photos. This project focuses on the missing middle: helping a couple revisit where they walked, where they stopped, what they did, and which memories belong to that trip.

Who This Is For

  • Flutter developers looking for a route, photo, mission, and map app example
  • Builders connecting Google Maps, Places, Firebase, Cloudinary, and local device APIs
  • Product-minded developers designing location-based memories for couples, families, or travel groups

Features

  • Mission creation with time limits and photo verification
  • Pet-friendly restaurant and cafe search with Naver Map deep links
  • Partner-specific heart markers with create, edit, and delete flows
  • Current location sharing between partners
  • GPS route recording with distance, duration, and candidate stop detection
  • Multi-photo album upload and mission photo organization
  • Korean and Japanese UI support

Tech Stack

App

  • Flutter
  • Dart
  • Riverpod
  • GoRouter

Backend / Infra

  • Firebase Core
  • Cloud Firestore
  • Cloudinary unsigned upload preset
  • Google Maps SDK
  • Google Places API
  • Naver Map URL Scheme

Device

  • Geolocator
  • Image Picker
  • Local Notifications
  • Gallery Save

Project Structure

lib/
├─ core/
│  ├─ constants/
│  ├─ providers/
│  ├─ router/
│  ├─ services/
│  ├─ theme/
│  └─ utils/
├─ features/
│  ├─ album/
│  ├─ map/
│  ├─ mission/
│  ├─ record/
│  └─ route/
└─ shared/

Quick Start

flutter pub get
flutter test
flutter run \
  --dart-define=GOOGLE_MAPS_API_KEY=YOUR_KEY \
  --dart-define=CLOUDINARY_CLOUD_NAME=YOUR_CLOUD_NAME \
  --dart-define=CLOUDINARY_UPLOAD_PRESET=YOUR_UPLOAD_PRESET \
  --dart-define=PARTNER_A_ID=PARTNER_A \
  --dart-define=PARTNER_B_ID=PARTNER_B \
  --dart-define=COUPLE_ID=DEMO_COUPLE \
  --dart-define=APP_PACKAGE_NAME=com.bibiandus.ourspringdays

For Android, add the Google Maps key to android/local.properties.

GOOGLE_MAPS_API_KEY=YOUR_KEY

android/local.properties is local configuration and should not be committed.

Firebase Android config should be stored locally at android/app/google-services.json. Do not commit that file to a public repository.

Public Repository Safety

Do not commit:

  • Firebase project IDs, app IDs, or API keys
  • Google Maps / Places API keys
  • Cloudinary cloud names or upload presets
  • Real user identifiers, private location history, or personal photos
  • Release APK or AAB files

Example build configuration is documented in dart_defines.example.json.

Documentation

Verification

flutter analyze
flutter test
flutter build apk --release

Current tests focus on provider behavior and app-load smoke coverage.

Roadmap

See TODO.md for planned improvements.

Contributing

  • Report bugs or setup problems in Issues.
  • Share product direction, UX feedback, or feature ideas in Discussions.
  • Small documentation fixes and focused example improvements are welcome as pull requests.

License

No explicit license is currently provided. If this project is intended for open reuse, adding MIT or Apache-2.0 is recommended.

About

Flutter travel memory map for couples with pet-friendly places, missions, route tracking, and photo albums

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors