Skip to content

POULASTAAdAS/Kyoku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kyoku

Showcase

ShowCase

Design Link - Figma


Description

Kyoku is a music streaming application like Spotify or apple music It is using HLS protocol to stream music with a backed build using ktor and the application is build using jetpack compose library. With over 70 thousand+ songs to play

Preview

Compact

Auth Preview Import Playlist Select Genre Select Artist

Expanded

Auth Preview Import Playlist Select Genre Select Artist

Features

  • Supports Every Screen size
  • Authentication using google and email
  • Auto Sync data with backend on each device

Technology

Client Server
Jetpack Compose Ktor
Splash Screen Exposed
Credentials MySQL
WorkManager Session
Dagger Hilt JWT
WindowSizeClass Jedis
Media3
Navigation
OkHttp
Paging
Room
Coil
Palette

Installation

Clone Repo

git  clone  https://github.com/POULASTAAdAS/Movie-Browsing-App.git

Docker

Remove .example from file .env.example

Add passwrords on file .env

MYSQL_USER_PASSWORD=your_password
MYSQL_PASSWORD=your_password
REDIS_PASSWORD=your_password

Run docker-compose.yml

docker-compose  start  -d

Client

Setup environment variables on local.properties file of the android app

BASE_URL="your base url"
CLIENT_ID=abcd

Add SHA1 certificate of the client app(Kyoku). Run this on gradle task

signinReport
  1. Create A Google Cloud Project on GCP

  2. Create OAuth Creadeintials for android and web here

  3. Add the Client Id on local.properties file

Server

1. shard-manager

Remove .example from file res.json.example. Add urls

{
  "storage": {
    "driverClassName": "com.mysql.cj.jdbc.Driver",
    "userJdbcURL": "your jdbc url",
    "kyokuJdbcURL": "your jdbc url",
    "genreArtistShard": "your jdbc url",
    "shardPopularSongUrl": "your jdbc url"
  }
}

Run shard-manager backed server.

  • This will create needed sharded database tables and populate with data

  • shard-manager also updates needed data i.e. song , artist etc popularity add new data at 12 am every day. Code file



2. kyoku-server

Remove .example from file application.conf.example

  • Add all the fields

The databse urls should be same on both application.conf.example and res.json.example

storage  {
	driverClassName  =  "com.mysql.cj.jdbc.Driver"
	userJdbcURL  =  "your jdbc url"
	kyokuJdbcURL  =  your  jdbc  url"
	genreArtistShard = "your  jdbc  url"
	popularShard = "your  jdbc  url"
}

Add Properties as environment variables

BASE_URL= "your base url"
CLIENT_ID="abc"
DEV_EMAIL=
ISSUER=https://accounts.google.com
SENDER_EMAIL=
SENDER_PASSWORD=

License

Designed and developed by Poulastaa Das.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.