Skip to content

AlphaSweater/CapeTownCoffees

Repository files navigation

Logo

πŸ“Š Cape Town Coffees

Kotlin Jetpack Compose Firebase Material 3

πŸ“ Overview

Cape Town Coffees is a sleek Android application designed for coffee lovers across Cape Town. The app helps users discover nearby coffee shops, explore reviews, share their own experiences, and save favourites for easy access later.

Whether you’re searching for a cozy spot to study, a trendy cafΓ© to meet friends, or the perfect latte, Cape Town Coffees connects you to the city’s best brews.

πŸ“š Table of Contents

✨ Key Highlights

  • πŸ—ΊοΈ Location-based Discovery - Find cafΓ©s near you with real-time distance and status
  • ⭐ Community Reviews - Share your experiences and read others' opinions
  • πŸ’Ύ Offline Access - Download cafΓ© details for when you're off the grid
  • πŸ” Secure Authentication - Firebase Auth with Google Sign-In integration
  • 🎨 Modern UI - Built with Jetpack Compose and Material Design 3

πŸš€ Features

πŸ” Authentication & Security

  • Secure Sign-up/Login with Firebase Authentication
  • Google Single Sign-On for quick access
  • Input Validation and security measures
  • Biometric Authentication, uses fingerprint recognition for secure authentication

β˜• Coffee Shop Discovery

  • Nearby CafΓ©s with distance, ratings, and open/closed status
  • Advanced Search & Filters by name and radius
  • Real-time Location services integration

πŸ’« Personalization

  • Favorites System - Save your go-to spots
  • Downloads - Access cafΓ© info offline
  • Multi-language Support - Users can change the language of the app to English, Afrikaans or Xhosa
  • Detailed CafΓ© Views - Comprehensive information including ratings, descriptions, and hours
  • Real-time Notifications - Users can choose to enable notifications for real-time updates and alerts

πŸ› οΈ Technical Excellence

  • Modern Architecture with clean separation of concerns
  • Smooth Performance with Kotlin Coroutines and Flow
  • Responsive UI that adapts to different screen sizes

πŸ”§ Tech Stack

Core

Database

Build & CI

API

  • Google Places (for grabbing cafes based on location) (new places API through SDK)

πŸ—οΈ Architecture

app/
β”œβ”€ data/
β”‚  β”œβ”€ common/        # networking/config helpers, result wrappers
β”‚  β”œβ”€ mapper/        # DTO ↔ domain model mappers
β”‚  β”œβ”€ model/         # DTOs from Places/Firebase responses
β”‚  └─ repository/    # Repository implementations (Places, Firestore, Auth)
β”‚
β”œβ”€ di/               # Hilt modules (binds repositories, SDK providers)
β”‚
β”œβ”€ domain/
β”‚  β”œβ”€ model/         # Pure domain models (UI-agnostic)
β”‚  β”œβ”€ repository/    # Repository interfaces (ports)
β”‚  └─ usecase/       # Interactors (single responsibility operations)
β”‚
β”œβ”€ ui/
β”‚  β”œβ”€ auth/          # Sign-in/Sign-up screens, AuthViewModel
β”‚  β”œβ”€ coffeeDetail/  # Detail screen (ratings, distance, open-hours)
β”‚  β”œβ”€ common/        # BaseAdapter, View utils, composables/views
β”‚  β”œβ”€ home/          # Home feed, sections, skeletons
β”‚  β”œβ”€ profile/       # Profile & account management
β”‚  β”œβ”€ review/        # Add/read reviews flows
β”‚  β”œβ”€ savedLists/    # Favorites / downloads (offline)
β”‚  β”œβ”€ search/        # Search UI, suggestions, filters
β”‚  └─ settings/      # App settings (permissions, privacy)
β”‚
β”œβ”€ util/             # Cross-cutting utilities (e.g., LocationUtil)
β”‚
β”œβ”€ CapeTownCoffeesApp  # Application class (Hilt entry)
└─ MainActivity        # NavHost, edge-to-edge, theming bridge

⚑ Installation

Prerequisites

πŸ› οΈ Build & Run

  1. Download and install Android Studio (Giraffe or newer) from the official site: https://developer.android.com/studio

  2. Open Android Studio on your computer.

  3. Get the project files:

  • Option 1 - Clone the Repository: Click "Get from Version Control" in the github repository and paste the repository link: https://github.com/AlphaSweater/CapeTownCoffees.git

  • Option 2 - Download Zip File: If you downloaded a ZIP file, extract it, then click "Open" in Android Studio and select the extracted project folder.

  • Wait for Gradle sync to complete. Android Studio will automatically download required dependencies. (This may take a few minutes the first time.)

  • Ensure you have the correct SDK versions installed:

  • Minimum SDK version needed is 26 (36+ recommended) (You can check or install SDKs via SDK Manager in Android Studio.)

  1. Connect a device to run the app:
  • Option 1: Plug in a physical Android device with USB debugging enabled.

  • Option 2: Create and start an Android Emulator via Device Manager in Android Studio.

  1. Click the green "Run" button at the top (or press Shift + F10) to build and launch the app.

  2. The app will install and launch on your selected device, showing the BudgetBuddy application.

πŸŽ₯ Video Demo

πŸ“Ί Watch the full walkthrough of Cape Town Coffees on YouTube: πŸ‘‰ Click here to view

πŸ“Έ Screenshots

Login Sign Up Home Page Cafe Details
List Screen Saved Cafes Profile Page Settings Page

πŸ‘₯ contributors

  • Chad Fairlie ST10269509
  • Dhiren Ruthenavelu ST10256859
  • Kayla Ferreira ST10259527
  • Nathan Teixeira ST10249266

πŸ“š Learning Outcomes

This project provided hands-on experience with:

πŸ—οΈ Architecture & Patterns

  • Clean Architecture implementation
  • Repository Pattern for data abstraction
  • MVVM with state management

πŸ”§ Technical Skills

  • Firestore Integration for real-time data syncing
  • Custom Mappers between database entities and domain models
  • State-driven UIs with Kotlin StateFlow
  • Coroutine Management for efficient threading

🎨 UI/UX Development

  • Jetpack Compose for modern declarative UI
  • Material Design 3 implementation
  • Responsive Layouts for various screen sizes

⚑ Performance Optimization

  • API Caching strategies to reduce network calls
  • Efficient Data Loading with pagination
  • Offline Capabilities with local storage

πŸ“š References

Cost Breakdown

App Demo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages