Skip to content

Repository files navigation

This is a Kotlin Multiplatform project targeting Android, iOS, Web, Desktop (JVM), Server.

Features (Implemented)

egoodist is built around a 3-phase roadmap that transforms charity into a daily mental hygiene ritual.

Phase 1: The "Set and Forget" Onboarding

  • Welcome Journey: A calming introduction to the "Digital Pushke" concept.
  • Budget Slider: Simple setting of monthly limits ($15/month defaulting to $0.50/day).
  • Trust Pool: Cause-based selection (Ecology, Animals, etc.) to avoid choice paralysis.
  • Payment Mockup: Seamless Apple/Google Pay integration flow.

Phase 2: The Daily Ritual

  • Daily Approval: One-tap interaction to confirm daily donations.
  • Tangible Impact: Each donation is linked to a specific, tangible outcome (e.g., "Clean the Pacific Ocean").
  • Dopamine Hit: Micro-animations and streak tracking to reward the act of giving.

Phase 3: The Impact Dashboard

  • Humanity Profile: Visualization of total impact, days active, and causes supported.
  • Breakdown: Donut charts showing distribution across categories.
  • History Ledger: Transparent list of all past donations.
  • Viral Sharing: Shareable impact cards for social media.
  • Standardized Web Export: Standalone <wnhlp-payment> web component for third-party charity embedding, implementing ZBP QR and RFC 8905 (payto:) standards. (Learn more)

Project Structure

  • /composeApp is for code that will be shared across your Compose Multiplatform applications.

  • /shared is for low-level business logic and constants shared between client and server.

  • /server is for the Ktor server application.

Localization

The app supports multiple languages to reach a global audience:

  • English (Default)
  • Polish (Polski)
  • Belarusian (Беларуская)

Technical Details

Build and Run

Android

./gradlew :composeApp:assembleDebug

Desktop (JVM)

./gradlew :composeApp:run

Web (WasmJs)

./gradlew :composeApp:wasmJsBrowserDevelopmentRun

Tip

Use ./gradlew compressWasmJs to pre-compress production assets using Gzip, Brotli, and Zstd for optimized delivery via Caddy.

Server

./gradlew :server:run

Testing

Core logic is covered by unit tests:

  • DonationRecordTest: Validates donation state and formatting.
  • MockDonationGeneratorTest: Ensures correct randomization and stat calculation.

Run tests with:

./gradlew test

Learn more about Kotlin Multiplatform, Compose Multiplatform, Kotlin/Wasm

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages