An effort to make a clone of Google Keep in play-scala with Firebase. It has:
- A login system that saves user data to Firebase
- Log in with Google/GitHub/Facebook
- Note creating/deleting/updating with Firebase
- Note sharing; notes can be shared with other users
- Note pinning and archiving
- A settings page in which a user can edit his/her settings and delete his/her account
The project's main focus is to learn Scala/Play and Firebase.
- Activator 1.3.12 including Play 2.5.12 (requires JDK 1.8)
- NodeJS with Babel
- Clone the repo
- Cd into the repo folder and run
activator ui
- In Activator, go to the run tab and run the project after it's compiled
- The project now runs at localhost:9000
- To compile the JavaScript, cd into the public folder and run
babel es6 --watch --out-file javascripts/main.js
- You're all set! You should be able to register an account at localhost:9000/register and login at localhost:9000/login
To make sign in with Facebook & GitHub work, you'll need a client_id and client_secret for both of them.
You'll have to go into app/controllers/OAuthController.scala
and put them in the right place (GitHub is around line 60, Facebook is around line 102).
To run the project in production, you'll have to do the following:
- Cd into the project
- First compile the JavaScript: cd into the public folder and run
babel es6 --watch --out-file javascripts/main.js
- Cd back to the project folder
- Type
sbt
to enter the sbt console - Type
playGenerateSecret
to generate an app secret. You'll need it to run the project. - Type
dist
to package the project. After it's done, the package is intarget/universal/keep-clone-1.0.zip
- Extract the zip file to any location you want
- In the extracted folder, go into
conf/application.conf
and edit thefirebaseAuthPath
variable to the Firebase authentication file path - In the terminal, type
keep-clone-1.0/bin/keep-clone -Dplay.crypto.secret=YOUR_APP_SECRET
- The project now runs at localhost:9000