Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Community running on Google App Engine
Python CSS JavaScript
branch: master

Merge pull request #32 from ma6174/github_rank

sort github repositories by stargazers_count
latest commit c8af57e2d2
Xin Liu authored
Failed to load latest commit information.
docs/zh-Hans To be continued in Kunming.
html5lib A lot of new stuff are in. And I'm working on next version.
mapreduce To be continued in Kunming.
static A lot of new stuff are in. And I'm working on next version.
tpl Merged with recent changes.
twitter Fixed a length calculation bug in Twitter Sync.
txt Now move topic is possible.
v2ex A lot of new stuff are in. And I'm working on next version.
.gitignore app.yaml is isolated.
LICENSE Richer docs.
README Gist style updated.
README.md Richer docs.
api.py add /api/replies/show.json
app.yaml.example For syncing to stormwind.local.
appengine_console.py Place features are in.
avatar.py Avatar logic enhanced.
backstage.py Protection is in.
blog.py A very special blog mode is in.
config.py.example Fixed a problem in iForgot.
css.py To be continued in Kunming.
data.py MapReduce is in. MobileMe is in.
favorite.py Protection is in.
feed.py Merged with recent changes.
images.py A new BaseHandler.
index.yaml A lot of new stuff are in. And I'm working on next version.
mail.py Going to work on site configurator.
main.py Merged with recent changes.
mapreduce.yaml MapReduce is in. MobileMe is in.
member.py sort github repositories by stargazers_count
misc.py Now topic can be deleted in mobile edition.
money.py For syncing to stormwind.local.
my.py Increate number of nodes showing on my nodes page.
notes.py Planes is in.
notifications.py Mobile enhancements.
page.py Minisite page serve is basically working.
place.py L10N minor bugs fixed.
queue.py Topic bookmark is basically working.
sso.py Fixed a bug.
t.py Twitter link patched.
template.py New feature: favorite/unfavorite nodes.
topic.py Dynamic description in head.
xmpp.py Now you can tweet from Email and Gtalk via V2EX.

README.md

Project Babel 2

Project Babel 2 is an open source software package for creating and supporting communities. It's written in Python and running on Google App Engine, which is a free and robust cloud hosting infrastructure.

V2EX, a community about sharing and discovering interesting stuff of the world, is proudly powered by Project Babel 2.

Features

  • Topics are organized under Nodes (Discussion Areas), you can have many Nodes in one community
  • Nodes can have header, foot and category property, or organized under Sections
  • Two clean themes: one for desktop browser, another for iPhone and Android
  • Optimized for modern browsers
  • Built-in WebDAV avatar facility, you can host all avatars with MobileMe or other WebDAV servers
  • Atom feed output
  • HTML5
  • Built-in MapReduce tasks for optimizing community data
  • Built-in OAuth Twitter client for tweeting and syncing topics/replies
  • Built-in Notes feature
  • Gravatar support

Installation

It's recommended to get the latest codebase of Project Babel 2 with git:

git clone http://github.com/livid/v2ex.git v2ex

Then you can rename v2ex to whatever you want to match your own App Engine AppID. And follow the steps:

  1. Copy app.yaml.example to app.yaml and change its application to match your own AppID.
  2. Copy config.py.example to config.py, and if you want to use the built-in Twitter features, please fill in your own OAuth consumer key and secret. And callback address for Twitter is http://your_app_id.appspot.com/twitter/oauth .
  3. Add this folder to Google App Engine Launcher as an existing application, and click Deploy. It's done and quite simple, right?

If you have any questions or feature requests, feel free to discuss it in official development node at V2EX:

http://v2ex.appspot.com/go/babel

Troubleshooting

FAQ

Why I got an error page says it needs index?

For newly deployed App Engine app, it took some time for Google to build indexes so that your data can be fast accessed. It usually take up to an hour to build all indexes required for a new installation of Project Babel 2.

How about performance?

According to our actual operation data, Project Babel 2 is able to support 100,000 pageviews under App Engine free quota. If you don't mind enabling billing, Project Babel 2 is able to support large sites with millions pageviews/day as long as you have enough budget for traffic.

Performance is always our area of focus, we'll keep improving it.

License

Project Babel 2 is licensed under very liberal BSD license.

Copyright (c) 2010, Xin Liu All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  • Neither the name of the OLIVIDA nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Something went wrong with that request. Please try again.