Skip to content

luucaohoanq/nocket-compose

Repository files navigation

📸 Nocket App

Kotlin Jetpack Compose Hilt Appwrite License

A modern Android prototype of a social camera app built with Kotlin and Jetpack Compose.
Features a clean Material 3 UI, smooth navigation, previewable components, and an Appwrite-backed data layer.

✨ Highlights

  • UI: Jetpack Compose + Material 3, dark/light themes, and previews
  • Navigation: Navigation Compose + top bars
  • Media: Image loading with Coil
  • Architecture: MVVM architecture, Hilt for DI, Retrofit (stub) + OkHttp
  • Backend: Appwrite SDK integration via type-safe BuildConfig fields

🖼 Screens

📱 Screen Previews
Posts
Posts
Friend List Component
Friend List
Post Detail
Post Detail
Profile
Profile
Camera
Camera
Submit Photo
Submit Photo
Post Detail
Chat
Messages
Messages
Settings
Settings
Contact List
Contact List
Add Caption
Add Caption
Logo
Logo
Splash Screen
Splash Screen
Splash Screen
Login Screen

📌 Reference: See navigation routes in
app/src/main/java/com/example/nocket/Navigation.kt

📂 Project Structure

components/     → Reusable UI: top bars, pills, lists, grids, etc.
ui/screen/      → Feature screens (post, message, profile, camera, submit photo)
data/           → SampleData for previews and demo
di/             → Hilt modules (e.g., AppwriteModule.kt)
repositories/   → Data sources (e.g., AppwriteRepository.kt)
viewmodels/     → State holders (e.g., AppwriteViewModel.kt)
constants/      → AppwriteConfig.kt bridges BuildConfig to the app

🛠 Tech Stack

Layer Technology
Language Kotlin
UI Jetpack Compose + Material 3
Navigation Navigation Compose
DI Hilt
Networking Retrofit, OkHttp, Gson
Media Coil
Backend Appwrite Android SDK

⚙ Appwrite Setup

This project reads Appwrite settings from local.properties and exposes them as BuildConfig fields.

Required Keys:

appwrite.version=1.6.0
appwrite.project.id=YOUR_PROJECT_ID
appwrite.project.name=YOUR_PROJECT_NAME
appwrite.endpoint=https://<your-endpoint>/v1

How it works:

  1. app/build.gradle.kts loads these values and generates BuildConfig constants.
  2. AppwriteConfig.kt exposes them as APPWRITE_* constants.
  3. di/AppwriteModule.kt configures the Appwrite Client, Account, and Databases.

🚀 Roadmap Ideas

  • Replace SampleData with real Appwrite repositories
  • Add authentication flow & real-time updates
  • Expand test coverage + UI tests

About

Locket App clone using Kotlin jetpack compose

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages