Coder Social home page Coder Social logo

diveboard / diveboard-web Goto Github PK

View Code? Open in Web Editor NEW
12.0 9.0 7.0 363.76 MB

Main Diveboard Rails app

License: GNU General Public License v3.0

Ruby 20.19% JavaScript 48.44% CoffeeScript 0.01% CSS 6.03% HTML 20.63% C++ 0.11% XSLT 0.04% Shell 0.12% Java 2.01% Dockerfile 0.03% SCSS 2.09% EJS 0.30%

diveboard-web's Introduction

Slack Chat โ‡ฆ Join us!

Diveboard logo

DIVEBOARD PLATFORM APP

Introduction

This repository holds the code of the Diveobard web application. As described in the main documentation, this piece is responsible for storing, making sense, displaying and exposing the user's logs.

It provides:

  • A public API (documentation)
  • A web frontend - the master branch is the current live one on www.diveboard.com
    • Translations of the frontend are done through OneSkyApp
  • a set of jobs a.k.a. workers

It relies on:

  • a Mysql database operated by Diveboard. A kickstart seed is available in this repo expurged from user data.
  • GCP Storage buckets to keep images & videos
  • a Rails stack (see the Dockerfile for full stack details)

Setting up a Development Environment

Database seed data is located here: https://s3.us-east-2.amazonaws.com/static.diveboard.com/seed_data.zip

In order to setup a working environment, we are providing a Dockerfile to build a test container for the Diveboard application.

To setup the Docker container run from the docker CLI:

docker build -t diveboard .
#OR if you want a clean start
docker build --no-cache -t diveboard .

Initialize the container:

docker run -v ${PWD}:/home/diveboard/diveboard-web/current diveboard /home/diveboard/diveboard-web/current/config/docker/init_env

You can then START the VM & connect to the container in interactive mode with:

docker run -v ${PWD}:/home/diveboard/diveboard-web/current  -v ${PWD}/tmp/mysql:/var/lib/mysql -p 80:80/tcp -p 443:443/tcp -p3306:3306/tcp diveboard

This will mount the current directory and allow you to use it as your dev codebase

A few last steps: You need to then point your /etc/hosts to resolve the docker ip with "dev.diveboard.com" You must forward ports 80>80 and 443>443 otherwise some resources won't load

Need help?

Join us on Slack: Join our Slack

diveboard-web's People

Contributors

alexksso avatar baarkerlounger avatar spd13 avatar the0ne avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

diveboard-web's Issues

FB 2.3 api will deprecate on July 10th

Graph API v2.3 will be deprecated on July 10, 2017

Diveboard currently uses FB API to authenticate users, push content to the Diveboard page on FB, publish dives on user feed and notify users when their content is being liked.
A lot of those features broke over time as the FB API evolved

Print to PDF is broken

Here's a exemple of failing call:

--- !ruby/object:Delayed::PerformableMethod
object: !ruby/object:Diveprinter
  initial_data: 
method_name: :generate_pdf_dives_without_delay
args:
- - 345202
- 30
- :page_width: 396.85039370078744
  :page_height: 575.4330708661417
  :cut_margins: 28.34645669291339
  :hole_offset: 48.18897637795276
  :nohole_offset: 19.84251968503937
  :reverse: true
  :pictures_pages: -1

And the response:

image file is an unrecognised format
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/bundler/gems/prawn-71fcce7e0bf0/lib/prawn/image_handler.rb:40:in `find'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/bundler/gems/prawn-71fcce7e0bf0/lib/prawn/images.rb:87:in `build_image_object'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/bundler/gems/prawn-71fcce7e0bf0/lib/prawn/images.rb:66:in `image'
/home/diveboard/diveboard-web/releases/20170627055606/app/models/diveprinter.rb:363:in `pdf_diveinfo'
/home/diveboard/diveboard-web/releases/20170627055606/app/models/diveprinter.rb:121:in `block in generate_pdf_dives'
/home/diveboard/diveboard-web/releases/20170627055606/app/models/diveprinter.rb:113:in `each'
/home/diveboard/diveboard-web/releases/20170627055606/app/models/diveprinter.rb:113:in `generate_pdf_dives'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/performable_method.rb:30:in `perform'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/backend/base.rb:94:in `block in invoke_job'
/home/diveboard/diveboard-web/releases/20170627055606/config/initializers/i18n_delayed_job.rb:21:in `call'
/home/diveboard/diveboard-web/releases/20170627055606/config/initializers/i18n_delayed_job.rb:21:in `block in <top (required)>'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `block (2 levels) in add'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `block in initialize'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `block in add'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `execute'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/backend/base.rb:91:in `invoke_job'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:204:in `block (2 levels) in run'
/usr/lib/ruby/1.9.1/timeout.rb:68:in `timeout'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:204:in `block in run'
/usr/lib/ruby/1.9.1/benchmark.rb:295:in `realtime'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:203:in `run'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:280:in `block in reserve_and_run_one_job'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `block in initialize'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `execute'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:280:in `reserve_and_run_one_job'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:187:in `block in work_off'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:186:in `times'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:186:in `work_off'
/home/diveboard/diveboard-web/releases/20170627055606/config/initializers/delayed_job.rb:38:in `work_off'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:150:in `block (4 levels) in start'
/usr/lib/ruby/1.9.1/benchmark.rb:295:in `realtime'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:149:in `block (3 levels) in start'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `block in initialize'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `execute'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:148:in `block (2 levels) in start'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:147:in `loop'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:147:in `block in start'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/plugins/clear_locks.rb:7:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/plugins/clear_locks.rb:7:in `block (2 levels) in <class:ClearLocks>'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `block (2 levels) in add'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/plugins/clear_locks.rb:7:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/plugins/clear_locks.rb:7:in `block (2 levels) in <class:ClearLocks>'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `block (2 levels) in add'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:61:in `block in initialize'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `block in add'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:79:in `block in add'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:66:in `execute'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/lifecycle.rb:40:in `run_callbacks'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/delayed_job-4.0.6/lib/delayed/worker.rb:146:in `start'
/home/diveboard/diveboard-web/releases/20170627055606/lib/tasks/job_runner.rake:30:in `block (4 levels) in <top (required)>'
/home/diveboard/diveboard-web/releases/20170627055606/lib/tasks/job_runner.rake:17:in `fork'
/home/diveboard/diveboard-web/releases/20170627055606/lib/tasks/job_runner.rake:17:in `block (3 levels) in <top (required)>'
/home/diveboard/diveboard-web/releases/20170627055606/lib/tasks/job_runner.rake:16:in `times'
/home/diveboard/diveboard-web/releases/20170627055606/lib/tasks/job_runner.rake:16:in `block (2 levels) in <top (required)>'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:240:in `call'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:240:in `block in execute'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:235:in `each'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:235:in `execute'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:179:in `block in invoke_with_call_chain'
/usr/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:172:in `invoke_with_call_chain'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/task.rb:165:in `invoke'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:150:in `invoke_task'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:106:in `each'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:106:in `block in top_level'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:115:in `run_with_threads'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:100:in `top_level'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:78:in `block in run'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/lib/rake/application.rb:75:in `run'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/gems/rake-10.4.2/bin/rake:33:in `<top (required)>'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/bin/rake:23:in `load'
/home/diveboard/diveboard-web/shared/bundle/ruby/1.9.1/bin/rake:23:in `<main>'

assets:explore task is taking too long

the assets:explore tasks on the production environment now takes days to complete.
We need to change the way this is done.
This tasks generates json assets for the explore page with data aggregated by zoom level.

Choose a license

It would be best to add a license to the project. I have a personal preference for MIT, but it's up to you to choose something according to your beliefs and the various libraries in use.

bulk edit list is taking too long to load

on bulk edit, it would be fantastic if the system would only load the last X (say, 25?) dives - I hope it would be faster again, then. for me, mostly always even the last 10 dives would be sufficient.
there could be e.g. a drop-down list for the user to select so that [25, 50, 100, all] dives are loaded into bulk edit list. this value could be saved as a user preference across sessions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.