Skip to content

Instantly share code, notes, and snippets.

@kressnerd
Forked from sabman/Softwareprojekte.md
Last active December 14, 2015 12:59
Show Gist options
  • Save kressnerd/5090180 to your computer and use it in GitHub Desktop.
Save kressnerd/5090180 to your computer and use it in GitHub Desktop.

The software project will carried out in cooperation with the company Spacial Cloud.

Description of the Company

Nowadays, when developers want to build a location aware application, they first have to know how to install and use a number of specialized libraries. They need a hosting service where these libraries are available. They also have to 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 developers 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

Student’s 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 in 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 upgrade 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

  • 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)

Students will get a deeper understanding of:

  • 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

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

Project plans

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
@kressnerd
Copy link
Author

small changes and reordering

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