Design Link - Figma
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








- Supports Every Screen size
- Authentication using google and email
- Auto Sync data with backend on each device
Client | Server |
---|---|
Jetpack Compose | Ktor |
Splash Screen | Exposed |
Credentials | MySQL |
WorkManager | Session |
Dagger Hilt | JWT |
WindowSizeClass | Jedis |
Media3 | |
Navigation | |
OkHttp | |
Paging | |
Room | |
Coil | |
Palette |
git clone https://github.com/POULASTAAdAS/Movie-Browsing-App.git
Remove .example from file .env.example
Add passwrords on file .env
MYSQL_USER_PASSWORD=your_password
MYSQL_PASSWORD=your_password
REDIS_PASSWORD=your_password
docker-compose start -d
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
-
Create A Google Cloud Project on GCP
-
Create OAuth Creadeintials for android and web here
-
Add the Client Id on local.properties file
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=
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.