Forage
A geocaching Android app using MVP architecture and modern libraries
Install / Use
/learn @Plastix/ForageREADME
Forage

<img src="app/src/main/res/mipmap-xxxhdpi/icon_large.png" align="left" width="200">
Forage is an open source Material Design geocaching Android app using MVP architecture and modern libraries. Forage integrates with the OpenCaching API.
This project is currently under heavy development!
This is my first Android project in order to learn the Android SDK and relevant Android libraries. Please critique my code! If you are just starting with Android check out this wiki page for a comphrensive list of learning resources that I used.
Screenshots
<img src="art/screenshots/forage_cache_list_empty.png" width="49%" /> <img src="art/screenshots/forage_cache_list.png" width="49%" /> <img src="art/screenshots/forage_detail.png" width="49%" /> <img src="art/screenshots/forage_map.png" width="49%" />Libraries
- Dagger 2
- Retrofit 2
- RxJava and RxAndroid
- Butterknife
- Realm
- Icepick
- Signpost and OkHttp-Signpost
- Material Dialogs
- Google Support Libraries
- Retrolambda
- Timber
- Google Play Location Services
- Google Play Maps
Testing Libraries
Requirements
To compile and run the project you'll need:
- Android SDK
- Android N (API 24)
- Android SDK Tools
- Android SDK Build Tools
23.0.3 - Android Support Repository
- Android Support Libraries
- JDK 1.8
- Valid API keys
API keys are not stored in the repo! Thus, you will need the following API keys:
Add the following to your global gradle.properties file. On OSX this file is stored at ~/.gradle/gradle.properties.
OKAPI_US_CONSUMER_KEY=PUT OKAPI CONSUMER KEY HERE
OKAPI_US_CONSUMER_SECRET=PUT OKAPI CONSUMER SECRET HERE
GOOGLE_MAPS_API_KEY=PUT GOOGLE MAPS KEY HERE
Release Builds
A release build needs to be signed with an Android Keystore. The easiest way to generate one is to open
Android Studio and go to Build -> Generate Signed Apk -> Create New... After that you need to create a
signing.properties file in the root directory and add the following info to it:
STORE_FILE=/path/to/your.keystore
STORE_PASSWORD=yourkeystorepass
KEY_ALIAS=projectkeyalias
KEY_PASSWORD=keyaliaspassword
Running gradle assembleRelease will then build and sign a release version of the app.
Contributions
- naalty: Design of the Forage app icon
License
This Source Code is subject to the terms of the Mozilla Public License, v. 2.0.
If a copy of the MPL was not distributed with this file, You can obtain one at
http://mozilla.org/MPL/2.0/.
Related Skills
clearshot
Structured screenshot analysis for UI implementation and critique. Analyzes every UI screenshot with a 5×5 spatial grid, full element inventory, and design system extraction — facts and taste together, every time. Escalates to full implementation blueprint when building. Trigger on any digital interface image file (png, jpg, gif, webp — websites, apps, dashboards, mockups, wireframes) or commands like 'analyse this screenshot,' 'rebuild this,' 'match this design,' 'clone this.' Skip for non-UI images (photos, memes, charts) unless the user explicitly wants to build a UI from them. Does NOT trigger on HTML source code, CSS, SVGs, or any code pasted as text.
openpencil
2.1kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
openpencil
2.1kThe world's first open-source AI-native vector design tool and the first to feature concurrent Agent Teams. Design-as-Code. Turn prompts into UI directly on the live canvas. A modern alternative to Pencil.
ui-ux-designer
Use this agent when you need to design, implement, or improve user interface components and user experience flows. Examples include: creating new pages or components, improving existing UI layouts, implementing responsive designs, optimizing user interactions, building forms or dashboards, analyzing existing UI through browser snapshots, or when you need to ensure UI components follow design system standards and shadcn/ui best practices.\n\n<example>\nContext: User needs to create a new dashboard page for team management.\nuser: "I need to create a team management dashboard where users can view team members, invite new members, and manage roles"\nassistant: "I'll use the ui-ux-designer agent to design and implement this dashboard with proper UX considerations, using shadcn/ui components and our design system tokens."\n</example>\n\n<example>\nContext: User wants to improve the user experience of an existing form.\nuser: "The signup form feels clunky and users are dropping off. Can you improve it?"\nassistant: "Let me use the ui-ux-designer agent to analyze the current form UX and implement improvements using our design system and shadcn/ui components."\n</example>\n\n<example>\nContext: User wants to evaluate and improve existing UI.\nuser: "Can you take a look at our pricing page and see how we can make it more appealing and user-friendly?"\nassistant: "I'll use the ui-ux-designer agent to take a snapshot of the current pricing page, analyze the UX against Notion-inspired design principles, and implement improvements using our design tokens."\n</example>
