Sharedocs
An internal knowledge sharing app.
๐ค [email protected]
/demo1
๐ค [email protected]
/demo2
or
System Requirements
- Scala 2.11 or 2.12
- PostgreSQL 9.5.x or 9.6.x
Setup for Development Environment
Setup PostgreSQL
Setup PostgreSQL server on your machine and create database.
$ createuser -P sharedocs
$ createdb -E UTF8 -T template0 --lc-collate=ja_JP.UTF-8 --lc-ctype=ja_JP.UTF-8 sharedocs
Prepare Tables
mac/*nix
./sharedocs db:migrate
Windows
./sharedocs.bat db:migrate
Set Environment Variables to sharedocsEnv script
mac/*nix
cp sharedocsEnv-template sharedocsEnv
Windows
cp sharedocsEnv-template.bat sharedocsEnv.bat
Environment Variables
| ENV name (*required) | Description | Example |
|:----|:----|:----|:----|
| SITE_NAME | site name for page header | "Sharedocs:CompanyName" |
| SITE_TITLE | site title for title
tag | "Sharedocs" |
| DATABASE_HOST * | datebase host | "localhost:5432" |
| DATABASE_DBNAME * | database name | "sharedocs" |
| DATABASE_USER * | database user | "user" |
| DATABASE_PASSWORD * | database password | "password" |
| GOOGLE_ANALYTICS_KEY | Google analytics key | "abcdefg" |
| LOGIN_PROVIDOR | login providorapp
- Login with email/passwordgoogle
- Login with Google+ account
default is app
| "google" |
| LOGIN_PERMITTED_EMAIL_DOMAINS | email domains to allow to login(comma-separeted)
allow to login any email address if empty | "yourcompany.co.jp" |
| SKINNY_OAUTH2_CLIENT_ID_GOOGLE | (if LOGIN_PROVIDOR==google)
Google OAuth2 API Key | "abcdefgabcdefg" |
| SKINNY_OAUTH2_CLIENT_SECRET_GOOGLE | (if LOGIN_PROVIDOR==google)
Google OAuth2 Secret Key | "abcdefgabcdefgabcdefg" |
| UPLOAD_DESTINATION | image file upload destinationlocal
- upload to local disks3
- upload to Amazon S3
default is local
| "s3" |
| LOCAL_UPLOAD_BASE_DIR | (if UPLOAD_DESTINATION==local)
base directory to upload image file | "/tmp" |
| LOCAL_UPLOAD_BASE_URL | (if UPLOAD_DESTINATION==local)
base url to access uploaded image file | "/static/uploads" |
| AWS_ACCESS_KEY | (if UPLOAD_DESTINATION==s3)
AWS access key | "abcdefg" |
| AWS_SECRET_KEY | (if UPLOAD_DESTINATION==s3)
AWS secret key | "abcdefgabcdefg" |
| AWS_S3_BUCKET | (if UPLOAD_DESTINATION==s3)
S3 bucket name | "sharedocs-xx" |
| AWS_S3_BASE_DIR | (if UPLOAD_DESTINATION==s3)
base pash to upload image file | "images/" |
| AWS_S3_BASE_URL | (if UPLOAD_DESTINATION==s3)
base url to access uploaded image file | "https://xxxxxxxx.s3.amazonaws.com/" |
Run Application
mac/*nix
./sharedocs run
Windows
./sharedocs.bat run
Additional setup for Development Environment
Setup npm command on your machine and install npm packages.
cd /path/to/sharedocs/dir
npm install
sharedocs uses webpack. You must execute the command when static resources are changed.
npm run webpack
Alternatively, you can use watch mode as follows:
npm run webpackw
After that, webpack recompiles static resources automatically after you change them.
External service settings
Google APIs
You must setup as below if you want to login with Google+ account.
https://console.developers.google.com/apis/credentials/ (Google Developers Console - API Manager - Credentials)
[Create credentials] - [OAuth client ID] - [Web application]
Authorized redirect URIs
: http://localhost:8080/session/callback
Amazon S3
You must setup as below if you want to upload files to Amazon S3.
https://console.aws.amazon.com/s3/
[Create Bucket] and then setting up bucket policy and CORS configuration.
Bucket Policy
Bucket Policy example:
[Bucket]-[Permissions]-[Edit bucket policy]
{
"Version": "2012-10-17",
"Id": "Policy*************",
"Statement": [
{
"Sid": "Stmt*************",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::[bucket name]/*"
},
{
"Sid": "Stmt*************",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::[user id]:user/[user-name]"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::[bucket name]/*"
}
]
}
CORS Configuration
CORS Configuration example:
[Bucket]-[Permissions]-[Edit CORS Configuration]
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>
Lisence
MIT License