Giter Site home page Giter Site logo

enes-kayiklik / kou-social Goto Github PK

View Code? Open in Web Editor NEW
21.0 3.0 1.0 7.84 MB

πŸŽ“ University social media and event sharing app made with Jetpack Compose

License: MIT License

Kotlin 100.00%
android clean-architecture firebase jetpack-compose kotlin mvvm

kou-social's Introduction

GitHub Cards Preview

KOU Social πŸŽ“

University social media and event app Demonstrate the Jetpack Compose UI using Firebase as Database. Made with ❀️ by Enes

Get it on Google Play

UI Inspirations 🎨

Polls item by Jonah Grindler

Meal List by simantOo

Create Poll by Damir

Profile by Evgen Kuznetsov

Settings by Den Klenkov

Beautiful icon pack πŸ“¦

Pela Icon by PelaTeam

Architecture πŸ—Ό

  • Single Activity No Fragment
  • MVVM Pattern

View: Renders UI and delegates user actions to ViewModel

ViewModel: Can have simple UI logic but most of the time just gets the data from UseCase.

UseCase: Contains all business rules and they written in the manner of single responsibility principle.

Repository: Single source of data. Responsible to get data from one or more data sources.

For more information you can check Guide to app architecture

Screens πŸ–Ό

Prerequisites

  • Local Properties Setup

    inside local.properties file add this three below line and Rebuild project.

    • apiPath="meallist/meal_list/main/b69b930d.json"

    • baseUrl="https://raw.githubusercontent.com/"

    • clientId="YOUR CLIENT ID HERE"

      • You can get this client id from Google Cloud Console
        1. First create Firebase Application
        2. Open cloud console and select your account where you created the Firebase application
        3. When you select your account your application should automatically show up on top left corner. If it's not then select your applicaiton by clicking Select a project button
        4. Create OAuth 2 Web Credential from Credentials section
        5. Copy Client id and paste it
        6. For more information follow the Guideline
  • Firebase Setup

    • Enable Firebase Features
      1. Create applicaiton using Firebase Console
      2. Enable email and Google login from Authenticaiton -> Sign in provider section
      3. Enable Firestore Database
      4. Enable Storage
    • Setup Project
      1. Add your debug and release SHA-1 key from Project Settings section
      2. Download google_services.json and paste to your project directory
  • Useful Links

Libraries πŸ“š

  • Kotlin - First class and official programming language for Android development.
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI.
  • Accompanist - A collection of extension libraries for Jetpack Compose.
  • Coroutines - For asynchronous and more..
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • Flows - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Jetpack DataStore - Jetpack DataStore is a data storage solution that allows you to store key-value pairs or typed objects with protocol buffers.
  • Compose Destinations - A KSP library that processes annotations and generates code that uses Official Jetpack Compose Navigation under the hood. It hides from you the non-type-safe and boilerplate code you would otherwise have to write.
  • Firebase - Firebase is an app development platform that helps you build and grow apps and games users love. Backed by Google and trusted by millions of businesses around the world.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.
  • Dagger - Hilt - Dependency Injection Framework.
  • Coil - Coroutine image loader library.
  • Jsoup - HTML parser library.
  • Compressor - An android image compression library.

Package Structure πŸ—‚

.
.
.
β”œβ”€β”€ di                    # Hilt Dependency Injection
β”œβ”€β”€ feature               # Screens, components and view models
|
β”œβ”€β”€ data                  # DTOs and repositories 
|    |
|    β”œβ”€β”€ event            # Screen Event classes
|    | 
|    β”œβ”€β”€ model            # models
|    |
|    β”œβ”€β”€ remote           # Retrofit API interfaces
|    | 
|    β”œβ”€β”€ repository       # Repository classes
|    |
|    └── state            # Screen States
|
β”œβ”€β”€ core                    
|    β”œβ”€β”€ ui               # Compose Theme
|    |               
|    └── component        # Main Activity components
|
β”œβ”€β”€ utils                 # Useful classes, extensions and more
|
└── Eventverse.kt         # @HiltAndroidApp

Contribute 🀝

If you want to contribute to this app, you're always welcome!

License πŸ“„

Copyright (c) 2022 Enes KayΔ±klΔ±k

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.