GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com โ€” GitHub - guyghost/wakeve

BranchesTags
Open more actions menu

Latest commit

 

History

871 Commits
871 Commits

Folders and files

NameName
Last commit message
Last commit date
.dao
.dao
 
 
.github
.github
 
 
apps
apps
 
 
composeApp
composeApp
 
 
docs
docs
 
 
fastlane
fastlane
 
 
gradle
gradle
 
 
infra/cloudflare/backend
infra/cloudflare/backend
 
 
iosApp
iosApp
 
 
models
models
 
 
scripts
scripts
 
 
server
server
 
 
shared
shared
 
 
.dockerignore
.dockerignore
 
 
.env.appstore.example
.env.appstore.example
 
 
.gitignore
.gitignore
 
 
AGENTS.md
AGENTS.md
 
 
BENCHMARKS.md
BENCHMARKS.md
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile
Dockerfile
 
 
Gemfile
Gemfile
 
 
Gemfile.lock
Gemfile.lock
 
 
PRODUCT.md
PRODUCT.md
 
 
QUICK_START.md
QUICK_START.md
 
 
README.md
README.md
 
 
ROADMAP.md
ROADMAP.md
 
 
build.gradle.kts
build.gradle.kts
 
 
gradle.properties
gradle.properties
 
 
gradlew
gradlew
 
 
gradlew.bat
gradlew.bat
 
 
package.json
package.json
 
 
pnpm-lock.yaml
pnpm-lock.yaml
 
 
pnpm-workspace.yaml
pnpm-workspace.yaml
 
 
settings.gradle.kts
settings.gradle.kts
 
 
tasks.md
tasks.md
 
 

Repository files navigation

Wakeve - Collaborative Event Planning

License Status Platforms

Wakeve is a collaborative event planning application for groups that need one place to decide when to meet, who is coming, what the plan is, and what still needs organizing. It combines Kotlin Multiplatform shared logic, Android Compose, native SwiftUI iOS, a Ktor backend, offline-first persistence, and Swarm DAO backlog governance.

๐ŸŽฏ Features

Current Roadmap State

The project is beyond the original Phase 2/Phase 3 README plan. Current source-of-truth tracking lives in ROADMAP.md and the Swarm DAO backlog (.dao/). | add-on-device-wakeve-ai | 40/41 tasks | Supported physical-device profiling for Foundation Models latency, cancellation, memory, and production-log privacy. |

Recent archived roadmap work includes Android AI workflows, Android adaptive UI, contact participant selection, scenario matrix voting, web microfrontends, account deletion, UGC moderation, iOS brand identity, and create-event slot previews.

Implemented Capabilities

โœ… Event Organization

  • Create events with multiple time slot options
  • Invite participants and manage RSVPs
  • Real-time availability polling
  • Weighted voting system (YES=2, MAYBE=1, NO=-1)
  • Automatic best-time calculation
  • Offline-first database persistence
  • DRAFT โ†’ POLLING โ†’ CONFIRMED โ†’ ORGANIZING โ†’ FINALIZED workflow coordination

โœ… Virtual Meetings

  • MeetingService with support for Zoom, Google Meet, FaceTime
  • Secure meeting link generation via backend proxy
  • Meeting invitation and reminder scheduling
  • Integration with native calendar
  • Meeting lifecycle management (create, update, cancel, start, end)

โœ… Multiplatform Support

  • Android with Jetpack Compose UI
  • iOS with native SwiftUI app, shared KMP integration, App Store readiness evidence, and WeatherKit/WakeveAI work in progress
  • JVM/Desktop support
  • Single shared codebase via Kotlin Multiplatform

โœ… Backend Infrastructure

  • Production-ready Ktor REST API
  • SQLDelight type-safe database
  • Event, meeting, auth, moderation, calendar, and organization APIs
  • Role-based access control
  • Secure API key management for external platforms

โœ… Release Readiness

  • App Store blocker register and final signoff workflow
  • Local privacy, accessibility, media, license, export, live URL, and Store metadata evidence docs
  • Account deletion and UGC moderation implementations archived after local validation
  • Critical release gate scripts for iOS metadata, web, and selected regression tests

๐Ÿš€ Quick Start

# Clone repository
git clone https://github.com/guyghost/wakeve.git
cd wakeve

# Build and test
./gradlew build
./gradlew :shared:jvmTest

# Start server
./gradlew server:run   # http://localhost:8080

# Android uses https://api.wakeve.app by default.
# For emulator-local backend development, add this to local.properties:
# server.url=http://10.0.2.2:8080

# Build Android app
./gradlew :composeApp:assembleDebug

See QUICK_START.md for detailed setup instructions.

๐Ÿ“ Project Structure

wakeve/
โ”œโ”€โ”€ shared/               # Kotlin Multiplatform shared code
โ”‚   โ”œโ”€โ”€ src/commonMain/  # Cross-platform models & logic
โ”‚   โ”œโ”€โ”€ src/jvmTest/     # JVM-specific tests
โ”‚   โ””โ”€โ”€ sqldelight/      # Type-safe database schema
โ”œโ”€โ”€ composeApp/          # Android app with Jetpack Compose
โ”œโ”€โ”€ server/              # Ktor REST backend server
โ”œโ”€โ”€ iosApp/              # Native iOS app and Xcode project
โ””โ”€โ”€ docs/                # Documentation

๐Ÿ—๏ธ Architecture

Multiplatform Layers

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  UI Layer (Compose/SwiftUI)         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Business Logic (EventRepository)   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Persistence (SQLDelight)           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  Platform Drivers (Android/iOS/JVM) โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Architecture Pattern: Functional Core & Imperative Shell (FC&IS)

Wakeve follows the Functional Core, Imperative Shell pattern to ensure testability and separation of concerns:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    IMPERATIVE SHELL                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Services (MeetingService, EventRepository)      โ”‚  โ”‚
โ”‚  โ”‚  State Machines (MVI FSM)                      โ”‚  โ”‚
โ”‚  โ”‚  External APIs (MeetingProxyRoutes)              โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚  Handles side effects: I/O, async, state mutations   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ†“
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                     FUNCTIONAL CORE                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚  Pure Functions (logic, validators, transforms)  โ”‚  โ”‚
โ”‚  โ”‚  Domain Models (Event, Meeting, Vote)           โ”‚  โ”‚
โ”‚  โ”‚  Business Rules (scoring, eligibility)           โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚  No side effects, 100% testable                      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Key Principles:

  • โœ… Shell CAN call Core
  • โœ… Core CANNOT call Shell
  • โœ… Core ignores Shell's existence
  • โœ… Pure functions in Core are easily testable
  • โœ… Side effects isolated in Shell (database, network, API)

See docs/architecture/meeting-service.md for detailed MeetingService architecture.

Key Technologies

  • Language: Kotlin 2.2.20 with Multiplatform support
  • UI: Jetpack Compose (Android), SwiftUI (iOS)
  • Database: SQLDelight with type-safe queries
  • Backend: Ktor 3.3.1 REST server
  • Testing: Kotlin test, XCTest, release gate scripts
  • Serialization: kotlinx-serialization for JSON

๐Ÿ“Š Project Statistics

Metric Value
Roadmap Status Active release hardening
Backlog Governance Swarm DAO (.dao/)
Shared Test Files 92 common test files
Android Test Files 85 Compose test files
iOS Test Files 28 XCTest files
Supported Platforms Android, iOS, JVM/server
Current External Blockers App Store/live infrastructure, signed-device WeatherKit, WakeveAI real-device profiling

๐Ÿ“– Documentation

Getting Started

  • QUICK_START.md - 5-minute setup guide
  • CONTRIBUTING.md - Development guidelines
  • AGENTS.md - Swarm DAO workflow and AI agents

Complete Documentation

For comprehensive documentation, visit docs/:

  • Architecture - System architecture and KMP patterns
  • API Documentation - REST API endpoints
  • Testing - Testing strategy and reports
  • Integrations - Calendar, OAuth, and external services
  • Migration Guides - Design system migrations
  • Refactoring Docs - Major refactorings
  • Implementation Status - PRD feature tracking

๐Ÿ”ง Development

Prerequisites

  • Java 11+
  • Kotlin 2.2.20
  • Gradle 8.14+
  • Android SDK (for Android development)
  • Xcode with an available iOS simulator (for iOS development)

Build Commands

# Run shared JVM tests
./gradlew :shared:jvmTest

# Run specific test
./gradlew :shared:jvmTest --tests "EventRepositoryTest"

# Build Android app
./gradlew :composeApp:assembleDebug

# Start server
./gradlew :server:run

# Format code
./gradlew spotlessApply

๐Ÿงช Testing

Wakeve has comprehensive test coverage:

EventRepositoryTest          10 tests
PollLogicTest               6 tests
DatabaseEventRepositoryTest 13 tests
OfflineScenarioTest         7 tests
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
Unit Tests                  36 tests โœ…

PrdWorkflowE2ETest          6 tests
ServiceIntegrationE2ETest    5 tests
MultiUserCollaborationTest   10 tests
DeleteEventE2ETest           6 tests
AuthFlowE2ETest              4 tests
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
E2E Tests                  35 tests โœ…

TOTAL                      71 tests โœ…

All tests cover:

  • โœ… Event creation and lifecycle
  • โœ… Participant management
  • โœ… Vote submission and aggregation
  • โœ… Database persistence
  • โœ… Offline data recovery
  • โœ… API endpoints
  • โœ… Complete PRD workflow (DRAFT โ†’ FINALIZED)
  • โœ… Multi-user collaboration scenarios
  • โœ… Virtual meeting link generation
  • โœ… Service integration (Budget, Transport, Meeting, Suggestion)

๐Ÿ“ก REST API

Event Endpoints

GET    /health                    # Health check
GET    /api/events                # List all events
GET    /api/events/{id}           # Get event details
POST   /api/events                # Create event
PUT    /api/events/{id}/status    # Update event status
GET    /api/events/{id}/participants   # List participants
POST   /api/events/{id}/participants   # Add participant
GET    /api/events/{id}/poll      # Get poll results
POST   /api/events/{id}/poll/votes    # Submit vote

Meeting Proxy Endpoints (Secure)

POST   /api/meetings/proxy/zoom/create              # Create Zoom meeting
POST   /api/meetings/proxy/google-meet/create       # Create Google Meet meeting
POST   /api/meetings/proxy/zoom/{id}/cancel        # Cancel Zoom meeting
GET    /api/meetings/proxy/zoom/{id}/status        # Get Zoom meeting status

Security Note: Meeting proxy endpoints secure external API keys (Zoom, Google Meet) by handling all external API calls server-side.

See docs/API/meeting-api.md for detailed MeetingProxy API documentation.

Example: Create Event

WAKEVE_API_BASE="${WAKEVE_API_BASE:-https://api.wakeve.app}"

curl -X POST "$WAKEVE_API_BASE/api/events" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Team Meeting",
    "description": "Q4 Planning",
    "organizerId": "user-1",
    "deadline": "2025-11-20T18:00:00Z",
    "proposedSlots": [{
      "id": "slot-1",
      "start": "2025-12-01T10:00:00Z",
      "end": "2025-12-01T12:00:00Z",
      "timezone": "UTC"
    }]
  }'

๐Ÿ” Security

Current

  • OAuth/email/guest authentication flows in shared and platform code
  • Role-based access control for organizer and participant behavior
  • Account deletion flow implemented and locally validated
  • UGC moderation, reporting, blocking, and review controls implemented and archived
  • Store-readiness checks for privacy manifests, logging hygiene, live URL/AASA evidence, App Review notes, and release signoff markers

๐Ÿ“ฑ Platform Support

Android

  • UI Framework: Jetpack Compose
  • Target: API 24+
  • Build: ./gradlew :composeApp:assembleDebug

iOS

  • Framework: SwiftUI with shared KMP framework integration
  • Project: iosApp/iosApp.xcodeproj
  • Target: tracked in Xcode build settings
  • Database: Native SQLite driver

JVM/Server

  • Framework: Ktor REST server
  • Database: SQLDelight with JDBC driver
  • Run: ./gradlew server:run

๐Ÿšฆ Development Workflow

Creating a Feature

  1. Create feature branch: codex/<feature-name> for Codex work
  2. Follow the Swarm DAO proposal process for significant changes (see CONTRIBUTING.md)
  3. Write tests for all new code
  4. Submit PR with issue reference

Git Commit Format

<type>(optional-scope): <description>

<optional body>

Examples:

feat(events): add event creation API
fix(timezone): handle poll slot conversion
test(sync): add offline conflict scenarios

๐Ÿ› Troubleshooting

Common Issues

Build Fails

./gradlew clean build  # Clean rebuild
java -version          # Verify Java 11+

Tests Failing

./gradlew :shared:jvmTest --info  # Verbose output
./gradlew :shared:jvmTest --tests "TestName" -d  # Debug mode

Server Won't Start

lsof -i :8080          # Check port 8080
./gradlew :server:run --info  # Debug mode

See QUICK_START.md for more solutions.

๐Ÿ“‹ Workflow

Wakeve follows the Swarm DAO governance process for the backlog:

1. dao_propose โ†’ 2. dao_deliberate โ†’ 3. dao_check โ†’
4. dao_plan โ†’ 5. dao_execute โ†’ 6. dao_ship โ†’ 7. dao_rate

See AGENTS.md for the detailed workflow.

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for:

  • Development setup
  • Code style guidelines
  • Testing requirements
  • Commit conventions
  • Pull request process

๐Ÿ“ž Support

  • Issues: Create GitHub Issue for bugs/features
  • Discussions: Use GitHub Discussions for questions
  • Documentation: See full docs in repository
  • Email: Contact maintainers for security issues

๐Ÿ“„ License

Wakeve is licensed under the MIT License. See LICENSE file for details.

๐Ÿ™ Acknowledgments

Built with:

  • Kotlin Multiplatform
  • Jetpack Compose
  • Ktor
  • SQLDelight

๐ŸŽฏ Vision

Wakeve's mission is to make collaborative scheduling effortless. By combining intelligent polling, automatic scheduling, and offline-first principles, we're building the event planning tool for distributed teams.


Ready to contribute? Start with QUICK_START.md and CONTRIBUTING.md!

Questions? Check docs/ for detailed documentation.

About

No description, website, or topics provided.

Resources

Readme

Contributing

Contributing
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402520 โ€” GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800ร—600. No cookies required.