Skip to content
This repository has been archived by the owner on Dec 13, 2018. It is now read-only.

devlille/callForPaper

 
 

Repository files navigation

Call For Paper

alt text

Features

  • Powered by App Engine
  • Spring Back-end
  • AngularJS Front-end
  • Google Spreadsheet
  • Datastore database
  • JWT Token
  • Localization (fr, en)
  • Material design

User Panel

  • Google, Github OAuth authentification
  • Account register (with email confirmation)
  • Talks submission (with email confirmation)
  • Save/delete draft

Admin Panel

  • Sort talks (by rate, date, track...)
  • Filter talks (by track, talker name, description...)
  • Rate talk
  • Comment talk

Setup

Change 127.0.0.1:8080 to your application domain for production

Obtaining OAuth Keys

  • Visit Google Cloud Console
  • Click CREATE PROJECT button
  • Enter Project Name, then click CREATE
  • Then select APIs & auth from the sidebar and click on Credentials tab
  • Click CREATE NEW CLIENT ID button
  • Application Type: Web Application
  • Authorized Javascript origins: http://127.0.0.1:8080
  • Authorized redirect URI: http://127.0.0.1:8080

Note: Make sure you have turned on Contacts API, Google+ API and Drive API in the APIs tab.


Obtaining reCAPTCHA Keys

Edit CFP Settings

Edit src/main/webapp/WEB-INF/appengine-web.xml replace the informations to suit your need :

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application>yourAppID</application>
    <version>1</version>
    <threadsafe>true</threadsafe>
    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
    </system-properties>
    <sessions-enabled>true</sessions-enabled>
    <env-variables>
        <env-var name="ENV" value="dev"/>
        <env-var name="GOOGLE_LOGIN" value="yourGoogleLogin"/> <!--owner's email of the spreadsheet (google drive account)-->
        <env-var name="GOOGLE_PASSWORD" value="yourGooglePassword" /> <!-- optional password for testing purpose, empty string otherwise-->
        <env-var name="GOOGLE_CLIENT_ID" value="yourGoogleClientId"/> <!--google oauth client id-->
        <env-var name="GOOGLE_CLIENT_SECRET" value="youtGoogleClientSecret"/> <!--google oauth secret-->
        <env-var name="GITHUB_CLIENT_ID" value="yourGithubClientId"/> <!--github oauth client id-->
        <env-var name="GITHUB_CLIENT_SECRET" value="youtGithubClientSecret"/> <!--github oauth client secret-->
        <env-var name="EMAIL_SENDER" value="yourEmailUsername"/> <!--sender's email address-->
        <env-var name="AUTH_SECRET_TOKEN" value="yourRandomSecretToken"/> <!--random secret token for jwt-->
        <env-var name="AUTH_CAPTCHA_PUBLIC" value="yourRecaptchaPublicToken"/> <!--recaptcha public key-->
        <env-var name="AUTH_CAPTCHA_SECRET" value="yourRecaptchaSecretToken"/> <!--recaptcha private key-->
    </env-variables>
</appengine-web-app>

Edit src/main/webapp/WEB-INF/application-prod.properties replace the informations to suit your need :

google.login=${GOOGLE_LOGIN}
google.password=${GOOGLE_PASSWORD}
google.spreadsheetName=CallForPaper // google spreadsheet name
google.worksheetName=prod // google worksheet name
google.clientid=${GOOGLE_CLIENT_ID}
google.clientsecret=${GOOGLE_CLIENT_SECRET}

github.clientid=${GITHUB_CLIENT_ID}
github.clientsecret=${GITHUB_CLIENT_SECRET}

auth.secrettoken=${AUTH_SECRET_TOKEN}
auth.captchapublic=${AUTH_CAPTCHA_PUBLIC}
auth.captchasecret=${AUTH_CAPTCHA_SECRET}  

database.loaded=true

email.emailsender=${EMAIL_SENDER}
email.send=true // disable emailing

webapp.dir=dist

app.eventName=DevFest 2015 // navbar title "Call for paper - {{eventName}}"
app.community=GDG Nantes // community name (for email)
app.date=06/11/2015 // event date
app.releasedate=01/09/2015 // speakers publication date
app.hostname=http://aesthetic-fx-89513.appspot.com // root domain (email images/links)

Edit src/main/webapp/WEB-INF/static/app/scripts/app.js add your providers tokens :

  .constant('Config', {
    'recaptcha': 'yourRecaptchaPublicToken',
    'googleClientId': 'yourGoogleClientId',
    'githubClientId': 'yourGithubClientId'
  })

Deployment :

App Engine :

grunt build
mvn appengine:update [-Dmaven.test.skip=true]

Local :

grunt build
mvn appengine:devserver [-Dmaven.test.skip=true]

For local deployment, set all appengine-web.xml env-var in you OS with the same value.

  • Go to : http://127.0.0.1:8080

  • The application will guide you througth the process to link your Google Drive account to the application.

Usage :

Manage admin users :

  • Visit Google Cloud Console
  • Select your project
  • Click Permissions button
  • Click Add member button :
  • Email: New member e-mail
  • Can view

App entry points :

Deployment

To use the powerful of AppEngine static engine, we divide the project into 2 services:

  • backend: war and conf files
  • default: static files resulting of WEB-INF/static/dist folder

Use the app.yaml in the root directory to upload the frontend service with the following commands:

grunt build
cp app.yaml src/main/webapp/WEB-INF/static/dist/
gcloud --project devfestnantes2015-cfp preview app deploy --version v1 --quiet src/main/webapp/WEB-INF/static/dist/app.yaml

Then, we have to configure the src/main/webapp/WEB-INF/static/dist/dispatch.yaml service to redirect the url to the good service:

dispatch:
  - url: "*/"
    module: default

  - url: "*/api/*"
    module: backend

  - url: "*/auth/*"
    module: backend

Use the upload command to activate the dispatch appcfg.sh update dist/ or appcfg.py -A devfestnantes2015-cfp update_dispatch dist/

About

CFP for DevFest Lille !

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Java 32.7%
  • HTML 29.7%
  • JavaScript 19.2%
  • CSS 18.3%
  • Shell 0.1%