Skip to content

Every Hour = More Power. Keep track of each hour of work you get done on your project.

Notifications You must be signed in to change notification settings

hackclub/hack-hour

Repository files navigation

Hack Hour

Hack Hour is a trash collection service project tracker & pomodoro timer for hacking on projects. It was used to track hours as a part of Hack Club's Arcade. She's on slack as @hakkuun and hangs out in the #hack-hour channel!

API

Note: There is no guarantee for the reliability of the API. If data is lost and/or is not registered for Arcade, there's not much we can do - use at your own risk.

All endpoints require an authorization header with the api key, as such: Authorization: Bearer <apikey>

GET /api/session/:slackId

Gets the latest session for the user.

Example Response:

{
    "ok": true,
    "data": {
        "id": "slackId",
        "createdAt": "2024-06-23T02:49:17.900Z",
        "time": 60,
        "elapsed": 12,
        "remaining": 48,
        "endTime": "2024-06-23T03:08:00.000Z",
        "goal": "No Goal",
        "paused": true,
        "completed": false,
        "messageTs": "messageTs",
    }
}

GET /api/stats/:slackId

Gets the stats for the user.

Example Response:

{
    "ok": true,
    "data": {
        "sessions": 0,
        "total": 0,
    }
}

GET /api/goals/:slackId

Gets the goals for the user.

Example Response:

{
    "ok": true,
    "data": [
        {
            "name": "No Goal",
            "minutes": 0
        }
    ]
}

GET /api/history/:slackId

Gets the history for the user.

Example Response:

{
    "ok": true,
    "data": [
        {
            "createdAt": "2024-06-23T05:09:04.105Z",
            "time": 60,
            "elapsed": 23,
            "goal": "No Goal",
            "ended": false,
            "work": "123"
        }
    ]
}

POST /api/start/:slackId

Starts a new session for the user.

Requires a JSON body with the following fields:

  • work: what the user is working on (string)

Example Response:

{
    "ok": true,
    "data": {
        "id": "sessionId",
        "slackId": "slackId",
        "createdAt": "createdAt",
    }
}

POST /api/pause/:slackId

Pauses or resumes the current session for the user, depending on the current state.

Requires an authorization header with the api key, as such: Authorization: Bearer <apikey>

Example Response:

{
    "ok": true,
    "data": {
        "id": "sessionId",
        "slackId": "slackId",
        "createdAt": "createdAt",
        "paused": true,
    }
}

POST /api/cancel/:slackId

Cancels the current session for the user.

Requires an authorization header with the api key, as such: Authorization Bearer <apikey>

Example Response:

{
    "ok": true,
    "data": {
        "id": "sessionId",
        "slackId": "slackId",
        "createdAt": "createdAt",
    }
}

API - No Auth

GET /ping

Returns with pong. Check if the thing is alive

GET /status

Get specific details on the status of hack hour (heidi)

Example Response:

{
    "activeSessions": -1,
    "airtableConnected": false,
    "slackConnected": false,
}

GET /api/clock/:slackId

Depreciated.

Responds with unix timestamp of the expected end time of the current session for the user.

About

Every Hour = More Power. Keep track of each hour of work you get done on your project.

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published