Skip to content
This repository

Hackful is a platform inspired by Hacker News

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 app
Octocat-spinner-32 config
Octocat-spinner-32 db
Octocat-spinner-32 features
Octocat-spinner-32 lib
Octocat-spinner-32 public
Octocat-spinner-32 script
Octocat-spinner-32 spec
Octocat-spinner-32 vendor
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 Guardfile
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 config.ru
README.md

About

Hackful is a platform developed to power http://hackful.com, a place for European entrepreneurs to share demos, stories or ask questions.

Developed by @8bitpal

Idea by @rayhanrafiq and @mattslight

Hosting donated by incite ict

Setup

Hackful runs on mysql.

Quick fix for getting the configuration to work in OSX as well as in ubuntu sudo ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock

API

Quick Facts

  • Format for API is JSON
  • You can Login with your credential or with a authentication token
  • Frontpage, Ask and New resources are avalaible as JSON
  • Posts JSON includes voting status, e.g. did you already vote the entry or not
  • Submiting, commenting and upvoting can be easily done with API
  • You can signup via API
  • Notfications are avalaible as JSON if you are logged in

Discussion on hackful.com

Known issues:

  • Login is not encrypted and this should be fixed

Examples for API:

Request all posts on frontpage:
GET http://hackful.com/api/v1/posts/frontpage
Response:
[{
    "created_at":"2012-03-24T10:11:14Z",
    "down_votes":0,
    "id":49,
    "link":"http://www.balkanventureforum.org/",
    "text":"Balkan Venture Forum April 2012",
    "title":"Balkan Venture Forum April 2012",
    "up_votes":4,
    "updated_at":"2012-03-26T18:48:19Z",
    "comment_count":6,
    "path":"/posts/49",
    "voted":false,
    "user":{
        "id":1,
        "name":"Oemera"
    }
}, ...]
Request all comments for a post:
GET http://hackful.com/api/v1/posts/frontpage
Response:
[{
    "commentable_id":49,
    "created_at":"2012-03-24T10:12:21Z",
    "id":34,
    "text":"asdasdasd",
    "up_votes":1,
    "updated_at":"2012-03-24T10:12:21Z",
    "voted":false,
    "user":{
        "id":9,
        "name":"AwesomeGuy"
    },
    "children":[
        {
            "commentable_id":34,
            "created_at":"2012-03-24T10:12:26Z",
            "id":35,
            "text":"asdasdasd",
            "up_votes":1,
            "updated_at":"2012-03-24T10:12:26Z",
            "voted":false,
            "user":{
                "id":9,
                "name":"AwesomeGuy"
            },
            "children":[]
        }, ... ]
}, ...]
Login and recieve a auth_token:
POST http://hackful.com/api/v1/sessions/login
user[email]=david@example.com&user[password]=mypassword
Response:
{
    "success":true,
    "message":"Successfully logged in",
    "auth_token":"xHpdsVa5QqahMRxqc4zc",
    "user":{
        "id":8,
        "name":"RandomGuy",
        "email":"random@example.com"
    }
}
Upvote a post
PUT http://hackful.com/api/v1/post/1/upvote
auth_token=1ZwyJfbv7eiiLE7Gipsv
Submit a new article:
POST http://hackful.com/api/v1/post
auth_token=1ZwyJfbv7eiiLE7Gipsv&post[text]=Text&post[title]=Title&post[link]=http://example.com

All implemented API methods:

POST    /api/v1/signup

GET     /api/v1/user/:id
GET     /api/v1/user/notifications
PUT     /api/v1/user

GET     /api/v1/posts/frontpage(/:page)
GET     /api/v1/posts/new(/:page)
GET     /api/v1/posts/ask(/:page)
GET     /api/v1/posts/user/:id(/:page)

GET     /api/v1/post/:id
POST    /api/v1/post
PUT     /api/v1/post/:id
DELETE  /api/v1/post/:id
PUT     /api/v1/post/:id/upvote
PUT     /api/v1/post/:id/downvote

GET     /api/v1/comments/user/:id
GET     /api/v1/comments/post/:id
GET     /api/v1/comment/:id
POST    /api/v1/comment
PUT     /api/v1/comment/:id
DELETE  /api/v1/comment/:id
PUT     /api/v1/comment/:id/upvote
PUT     /api/v1/comment/:id/downvote

Contribution

Please post feature requests or bugs as issues.

Testing

Cucumber test cases are almost done and on the way.

ToDo's

  • Write wiki article for hackful API
  • Encrypt API login (password is send without encryption to API)
Something went wrong with that request. Please try again.