Hacker News written in Python
TODO
for example in Ubuntu 14.04 + MySQL + uWSGI + Nginx
sudo apt-get update sudo apt-get install git python-dev mysql-server libmysqlclient-dev nginx python-pip python-virtualenv sudo adduser --disabled-login --gecos 'PyHackerNews' pyhn
sudo mysql_secure_installation sudo mysql -u root -p # !!!!replace @password as you wish!!!! mysql> CREATE USER 'pyhn'@'localhost' IDENTIFIED BY '@password'; mysql> SET storage_engine=INNODB; mysql> CREATE DATABASE IF NOT EXISTS `pyhn_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `pyhn_production`.* TO 'pyhn'@'localhost'; mysql> \q sudo -u pyhn -H mysql -u pyhn -p -D pyhn_production mysql> show databases; mysql> \q
su pyhn cd /home/pyhn git clone https://github.com/akun/PyHackerNews.git cd /home/pyhn/PyHackerNews virtualenv venv source venv/bin/activate pip install -r requirements.txt cp src/pyhn/settings/local.example.py src/pyhn/settings/local.py vim src/pyhn/settings/local.py python src/manage.py syncdb --noinput python src/manage.py collectstatic --noinput
# you can also use default config vim deploy/uwsgi.ini # running it manually uwsgi deploy/uwsgi.ini
# !!!!default port is 8000!!!! # you can change to 80, but need remove `/etc/nginx/sites-enabled/default` vim /home/pyhn/PyHackerNews/deploy/pyhn_nginx.conf exit # use default user sudo ln -s /home/pyhn/PyHackerNews/deploy/pyhn_nginx.conf /etc/nginx/sites-enabled/ sudo /etc/init.d/nginx restart
# running uWSGI via Upstart sudo ln -s /home/pyhn/PyHackerNews/deploy/pyhn_uwsgi.conf /etc/init # after reboot, you can do it sudo initctl start|stop|restart pyhn_uwsgi
Demo: http://assert.do/
- [o] show news list
- [o] show news list, order by score, with paginator
- [o] show news list, order by post time
- [o] show news info: title, domain, point, reporter, since when, comment count
- [o] vote for news. login required
- [o] remove news you post. login required
- [o] submit news
- [o] submit news with title and URL/Content. login required
- [o] URL for news
- [o] leave URL blank to submit a question for discussion
- [o] submit news with title and URL/Content. login required
- [o] comment
- [o] show comment list order by score, with indent
- [o] show comment info: comment words, point, who comment, since when
- [o] copy comment link, in browser address input
- [o] add comment abount news. login required
- [o] reply the comment. login required
- [o] vote for comment. login required
- [o] remove the comment you add or reply. login required
- [o] Auth/Account
- [o] login with social site's oauth
- [o] GitHub
- [o] Sina Webo
- [o] show social site's oauth list
- [o] edit personal account info: username, email(for gravatar). login required
- [o] show someone account info: username for show, score, about
- [o] login with social site's oauth
- [o] Hacker News Score System(auto)
- [o] news score
- [o] comment score
- [o] user score
- [o] calculate score in background
- [o] Customrize
- [o] Title
- [o] Copyright
- [o] Google Analytics
- [o] Bootstrap Themes
- [o] RSS
- [o] in news
- [ ] in user
- [ ] in comment
fork it and init env
$ git clone git@github.com:yourname/PyHackerNews.git $ cd PyHackerNews $ virtualenv . $ source bin/activate $ make
add features or resolve bugfix, then run test
$ make test
make pull request
- support news RSS
- update Python requirements
- docs: Manual Install
- make run support run by PORT
- init project
MIT