Skip to content

Instantly share code, notes, and snippets.

@sabman
Forked from kashif/Softwareprojekte.md
Last active December 14, 2015 06:19
Show Gist options
  • Save sabman/5042172 to your computer and use it in GitHub Desktop.
Save sabman/5042172 to your computer and use it in GitHub Desktop.

a short description of your company and what you do/offer

Today, if a developer wants to build a location aware application, they must first know how to install and use a number of specialized libraries. They need a hosting service where these libraries are available. They must also be familiar with hundreds of geographic data formats and know how to import them into their database. Add to this the need for real-time location-triggered alerts and the developer can spend days researching, experimenting and prototyping to find the right mix of database and libraries for their particular web or mobile application project. Simply put, building sophisticated location aware applications is hard!

Instead wouldn't it be great if you could just sign up and instantly load location data and access spatial functions from your existing app? SpacialDB is built to do just this.

SpacialDB is "location-aware application development made simple".

SpatialDB does this by providing:

  1. a single click setup of a production spatial database
  2. a way to import a number of geospatial data formats
  3. a dashboard and command line interface to manage the database
  4. a simple RESTful API to query the hosted spatial data and
  5. real time spatially triggered alerts for asynchronous notifications

a detailed description of the students tasks/project

0. Upgrade API and Payment Gateway Integration

SpacialDB monitors the total data being stored by a user. The amount of storage is limited by the plan the user has chosen. SpacialDB will soon be introducing paid plans to implement upgrades, the provisioning API needs to allow user's to change their plan. Paid accounts need to integrate with our payment gateway allowing users to enter their credit card details and create a monthly subscription.

1. Upgrading Provisioning API to allow Provisioning of Geographically Distributed Servers

SpacialDB's servers are located Germany. We are currently in the process of setting up the US servers with plans for servers in Asia and South America as well.

SpacialDB's provisioning API for remote SpacialDB instances, needs to be modified to allow customers to specify the intended location of the servers.

Students will need to code a distributed database server daemon (for provisioning and messaging) on each geographically distributed server. The daemon will handle requests from the client via a REST API. Students will need to upgrade the RESTful Web Service to take parameters specifying the server's location and asynchronously process responses from daemon.

2. Data Analytics and Dashboard Visualizations

SpacialDB customers perform a lot of sophisticated queries. We collect this information in log files. Post-processing and giving our customers access to this data is a useful service to help them analyze their applications demands and usage patters. Related to this is the task of integrating our Payment Gateway for allowing customers to pay when they exceed certain thresholds and account limits.

Developers will develop the API for accessing the analytics data and add visualization with a javascript library such as D3 and integrate it into the online admin dashboard used by the customers.

3. Upgarde and Deploy the Rails app

SpacialDB's admin dashbaord application and provisioning API is running on Rails 3.x with Passenger as the web application server. To meet the increased demands on the application we want to upgarde the application to run Rails version 4.0 with Ruby 2.0 while using Unicorn and NGINX as a high performance Web Server. Related to this is the SpacialDB command-line client written in Ruby. This also needs to be upgraded.

requirements (knowledge of, e. g. Spatial DB course, programming skills)

  • Excellent programing skills
  • Understand of MVC Design pattern
  • Understand RESTful APIs and Web Services
  • Understand and use git for source code management
  • Ability to abstract and solve coding problems
  • Basic Javascript and Web Development
  • Understand and Embrace Test Driven Development (TDD)

task/project plans (what will they do?)

0. Upgrade API and Payment Gateway Integration

  • Configure test payment gateway
  • Modify the REST API for creating and upgrade to paid plans
  • Configure production payment gateway
  • Deploy to production gateway

1. Upgrading Provisioning API to allow Provisioning of Geographically Distributed Servers

  • Understand the code behind the current Database provisioning API
  • Design the architecture for a distributed version of provisioning API
  • Modify to allow additional parameter for location of server
  • Code provisioning daemon that runs on each distributed server
  • Deploy the new version of the API and Daemons

2. Data Analytics and Dashboard Visualizations

  • Design the stats REST API
  • Develop Scripts (SQL) to collect and store stats
  • Develop the REST API for showing customer's database stats
  • Add visualization to the dashboard
  • Deploy

3. Upgarde and Deploy the Rails app

  • Improve the test coverage on current application
  • Upgrade the Application to Rails 4 and Ruby 2.0
  • Fix any breaking tests
  • Deploy

what are the students going to work with/learn:

  • Ruby on Rails Web Application Framework
  • Test Driven Development
  • RESTful Web Services and API Design
  • Developing for and deploying Distributed and Cloud Applications
  • Geospatial Databases
  • Secure Payment Processing and Integrating Gateways
  • Internals of PostgreSQL and PostGIS
  • Javascript libraries such as D3, JQuery, Ember.js
  • Web Servers

programming languages

  • Ruby
  • Javascript
  • Shell programming
  • SQL (Spatial/Non-Spatial)

infrastructure (versioning system, build system)

  • EU Servers at Hetzner
  • US Servers at Server4You
  • Source Code Management: Git
  • OS: Ubuntu 11
  • Database Server: PostgreSQL with PgBouncer for connection pooling
@kressnerd
Copy link

Small changes and reordering.
I couldn’t find the pull request for gists. Maybe you could update your gist from my fork:
https://gist.github.com/kressnerd/5090180

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment