Giter Club home page Giter Club logo

appengine's Introduction

2cloud App Engine Server

About

2cloud is a free, decentralised, open source project to try and make sharing content between browsers and devices as seamless and effortless as possible. An up-to-date list of devices and browsers supported by the project is available at http://www.2cloudproject.com/clients

This is the App Engine software that powers our public server at https://2cloudapp.appspot.com. We provide it here as a reference for implementing your own server software for the project and as a plug and play package for users who want to host their own servers, but don't necessarily want to write their own server.

Installation Instructions

We tried to make installation as streamlined as possible. You just need to download the source (use git, or the download button) and change the identifier in app.yaml. Then use the App Engine SDK to sync it just like you normally would.

Where to Get Help

We try to maintain a presence with our users. To wit, we have:

If you don't use any of those... you're kind of out of luck.

Contribution Guidelines

The quickest, easiest, and most assured way to contribute is to be a beta tester. Simply join the mailing list and wait for a new beta to be released. Try and break it. Submit feedback. Wash, rinse, repeat.

If you're interested in contributing code, we use different guidelines for each part of our app. This is driven by necessity; you can't use PEP-8 on Java, for example. Our App Engine guidelines are simple:

  • If possible, have unit tests written for what you're patching
  • Explain clearly in your pull request what you're patching and why
  • Make sure your code follows the style laid out in PEP-8

That's pretty much it. We're laid back. The best way to figure out what's on our to-do list is to look at the issue tracker or ask on the dev mailing list. Whatever you work on should be something you want to see implemented, though.

Contributors

2cloud is an open source application. It is technically "owned" by Second Bit LLC, but all that really means is they take care of the mundane administrative and financial stuff. The team behind 2cloud is separate from the Second Bit team (despite some overlap). The 2cloud team is as follows:

They're pretty friendly. Please do get in touch!

Credits and Alternatives

One of the great parts about being an open source project is how often we get to stand on the shoulders of giants. Without these people and projects, we couldn't do what we do.

  • blog.notdot.net (basis of stats system)
  • docs.python.org (basis of timestamp.py)
  • jQuery (Stats dashboard)
  • Chrome to Phone (Inspiration)

There are some alternatives to 2cloud out there, and we encourage you to try them out. Use what works best for you. You can find an up-to-date list on our website.

appengine's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

appengine's Issues

Unit Tests

Really need a unit testing system. Badly.

Need to Receive Payments

We need to set the server up to receive payments from the Android In-App Payments. We then need to modify the user's account to give them immunity status.

Need a Stats Dashboard

Should be Channels powered (so I need to add a channel callback into the /_ah/prospective_search handler) and use Highcharts to animate the charts.

Fix Active Users Stat

Active users stat isn't working correctly; it increments for the same user multiple times in a stat period.

Need to Track User Activity

We need to know how many users are using the application every single day. An active user is one that costs us money-- someone who opens a Channel or sends a link.

Implement C2DM

Implement support for sending links to Android devices using C2DM.

Fix Payments Stats

The Payments datapoint isn't being initiated by cron, either hourly or daily. Needs to be fixed.

Need a Defined API

We can't just keep defining URLs as we please and using them willy-nilly. Let's define an API, shall we?

Dynamic Loading of Products

Should be able to list/load products for sale through In-App Payments. Need to be able to set name, id, price, and bulk discount thresholds.

Port Over Information

Need to port all the information found on android2cloud.appspot.com over to 2cloudproject.appspot.com.

Need a Build System

Build system should:

  • Run unit tests
  • Offer to upload to App Engine
  • Offer to commit to git

Need to Track Channels Created

The most important piece of information we need stats on is channels created per day. This will also serve as the basis for the quota.

Send Text

Would be cool to be able to send text between the devices.

Link History in App

Should be able to display a list of links in the app itself.

Should be filterable by sender, receiver, and date.

No Link Length Limit

There is no checking on the client side right now for link length; links can only be 500 characters or less.

We should check the length of the link. If it's over 500, we should shorten it automatically. This should be controllable through a setting.

Compress Stats

Stats should be compressed; we don't need a datastore object for every hour. We should have an object for every day and use a ListProperty to store the hour info. This will give us less datastore reads to get more information.

It will, unfortunately, also nuke the stats we currently have in place.

Extensions Seem to Interfere With Channels

It looks like extensions could possibly be interfering with channel creation. This is my best guess for the problems we've been having with Javascript cross-frame access. I need to investigate and find out exactly what extensions cause this problem, and why.

Channel Message Overflow

I just patched the server to try to dissuade situations in which the channel messages will be too large to send, which breaks everything. The patch is imperfect, however, because it uses an arbitrary limit of ten links per message. This message could, in theory, still overflow the limits App Engine has placed on channel messages.

The message should be no more than 32k in length and be ASCII text. App Engine will throw a InvalidMessageError() if these conditions aren't met. Docs: http://code.google.com/appengine/docs/python/channel/exceptions.html

Channel Tokens Should Be Stored in DeviceData

We're swallowing the loss of quite a bit of CPU if a token gets flushed from memcache. They need to be stored within the datastore in DeviceData, along with their expiration date.

Enable AppStats

Need to figure out exactly how much statistics are costing us. Also would like a general breakdown of the cost of requests.

Link History Page

Need a user-friendly way of displaying the link history. Should be filterable by date, sender, receiver, and whether it has been opened or not. AJAX enabled would be nice.

Need to Track Read Links

It'd be great to see how many links are being "orphaned"-- that may be a good indicator that there are failures between Chrome and App Engine. If we track the action of marking a link as read, we'll be able to contrast with the link activity and get a good idea of how many links are being lost.

Fix Stats Dashboard

Due to the unfortunate loss of Highcharts, we're sticking with a table-based dashboard. Should have the new-hourly-stat bug fixed (rows aren't added to the correct table). Should also organise data on a hourly/daily basis, not the stat basis it currently has.

Need to Track Payments

It's important that we know exactly how many users are paying to escape the quota every day.

Implement C2DM

Need to implement C2DM to send messages/links/device updates/etc. to devices.

Need to Implement the Quota

Need to check the number of channels opened every time someone wants to open a new one. If that number is higher than the configured quota, we need to not open the channel but instead respond with a message.

Device Creation Should Be Limited

The only way someone can really do a resource attack on us right now is to create lots and lots of devices. We need to limit the number of devices that can be created/connected in a day. Some absurdly unreasonable number -- 100/user, or something -- that will never be hit unless the user is actively trying to make as many devices as possible.

Duplicate Links

Channels seem to send all the links that have been sent from/to (not sure which) that page. E.g., loading up the main page and sending to the Web device will send a link. Sending another link will send BOTH links. Refreshing the page and sending a third link will only send the third link.

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.