Abstract | Application Details | Preview | Technologies | Database Schema | Endpoints | Contributors
Analog is the ultimate to-do list application. With this application, users can easily manage tasks, organize projects, and write notes. With newly implemented features such as a whiteboard to plan in real-time and file uploads to utilize external resources, it will now be easier than ever to gather your thoughts and create the perfect strategy for your personal ventures!
This project served as our group's capstone, fulfilling the graduation requirements of Turing School of Software and Design. For further information on Capstone requirements, please visit: Capstone Project
This project utilizes service-oriented architecture, enabling the frontend to consume both the application's main database API and the AWS S3-specific API. This design choice was created for easier scaliability, easier maintanence needs, and to properly utilize the different skillsets and tech stacks that each group member excels at.
See the respective repositories for thier installation instructions:
- React
- Redux
- Tailwind CSS
- Bootstrap
- Ruby 3.2.2
- Rails 7.08
- Gems:
- capybara | factory_bot_rails | faker | jsonapi-serializer | rack-cors | rspec-rails | shoulda-matchers | simplecov
- Websockets
- CI with GitHub Actions
- Postman
- Heroku (with CD)
- AWS
create_table "projects", force: :cascade do |t|
t.string "title"
t.string "description"
t.string "color"
t.integer "status", default: 0
t.date "deadline"
t.bigint "user_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_id"], name: "index_projects_on_user_id"
end
create_table "tasks", force: :cascade do |t|
t.string "title"
t.string "description"
t.integer "priority"
t.integer "status", default: 0
t.bigint "project_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["project_id"], name: "index_tasks_on_project_id"
end
create_table "users", force: :cascade do |t|
t.string "username"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_foreign_key "projects", "users"
add_foreign_key "tasks", "projects"
GET /api/v1/users/:id/dashboard
{
"data": {
"id": "1",
"type": "dashboard",
"attributes": {
"username": "Test User 1",
"email": "[email protected]",
"projects": [
{
"id": 1,
"title": "Project 1",
"description": "This is the first project",
"color": "123xyz",
"status": "assigned",
"deadline": "2023-12-12",
"tasks": [
{
"id": 1,
"title": "Task 1",
"description": "This is the first task",
"priority": "low",
"status": "backlog",
"project_id": 1
},
{
"id": 2,
"title": "Task 2",
"description": "This is the second task",
"priority": "medium",
"status": "doing",
"project_id": 1
}
]
},
{
"id": 2,
"title": "Project 2",
"description": "This is the second project",
"color": "456abc",
"status": "assigned",
"deadline": "2023-11-24",
"tasks": [
{
"id": 3,
"title": "Task 3",
"description": "This is the third task",
"priority": "high",
"status": "backlog",
"project_id": 2
},
{
"id": 4,
"title": "Task 4",
"description": "This is the fourth task",
"priority": "critical",
"status": "done",
"project_id": 2
}
]
}
]
}
}
}
POST /api/v1/users/:id/projects
{
"data": {
"id": "7",
"type": "project",
"attributes": {
"user_id": 1,
"title": "project 1",
"description": "A New Project",
"color": "123xyz",
"status": "assigned",
"deadline": "2023-12-11"
},
"relationships": {
"tasks": {
"data": []
}
}
}
}
POST /api/v1/users/:id/projects/:project_id/tasks
{
"data": {
"id": "13",
"type": "task",
"attributes": {
"project_id": 6,
"title": "Task 1",
"description": "A New Task",
"priority": "medium",
"status": "backlog"
}
}
}
PATCH /api/v1/users/:id/projects/:project_id/tasks/:task_id
{
"data": {
"id": "13",
"type": "task",
"attributes": {
"project_id": 6,
"title": "Task 1",
"description": "A New Task",
"priority": "medium",
"status": "doing"
}
}
}
- William Chen - GitHub: @williamfchen
- Robert deLaguna - GitHub: @rjdelaguna
- Johann Dee - GitHub: @joh-ann
- Logan Matheny - GitHub: @loganpaulmatheny
- Nicholas McEnroe - GitHub: @NSMcEnroe
- Will Weston - GitHub: @WillWeston94