Skip to content
@analog-m4

analog-m4

Table of Contents

Abstract | Application Details | Preview | Technologies | Database Schema | Endpoints | Contributors

Abstract

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

Application Details

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:

Frontend Code Repository

Backend Code Repository

AWS S3 Repository

Preview

Screenshot 2023-12-10 at 00 34 59
More Images Screenshot 2023-12-10 at 00 38 21

Analog 1.0

Screenshot 2023-12-10 at 00 46 08

Analog 1.0 Whiteboard

Screenshot 2023-12-10 at 00 46 08

Analog 2.0

Screenshot 2023-12-10 at 00 46 08

Analog 2.0 Dark Mode

Videos

Jan 12 2024: Eval Video

Technologies

  • 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

React Redux TailwindCSS React Router JavaScript HTML5 CSS3 Cypress Ruby Rails Postgres AWS GitHub Actions Heroku Vercel Postman

Database Schema

 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"

Endpoints

Display a User's Dashboard

GET /api/v1/users/:id/dashboard
Example Value:
{
    "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
                        }
                    ]
                }
            ]
        }
    }
}

Create a New Project

POST /api/v1/users/:id/projects
Example Value:
{
    "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": []
            }
        }
    }
}

Create a New Task

POST /api/v1/users/:id/projects/:project_id/tasks
Example Value:
{
    "data": {
        "id": "13",
        "type": "task",
        "attributes": {
            "project_id": 6,
            "title": "Task 1",
            "description": "A New Task",
            "priority": "medium",
            "status": "backlog"
        }
    }
}

Update a Task

PATCH /api/v1/users/:id/projects/:project_id/tasks/:task_id
Example Value:
{
    "data": {
        "id": "13",
        "type": "task",
        "attributes": {
            "project_id": 6,
            "title": "Task 1",
            "description": "A New Task",
            "priority": "medium",
            "status": "doing"
        }
    }
}

Contributors

Pinned Loading

  1. analog_fe analog_fe Public

    JavaScript 1

  2. analog_be analog_be Public

    Ruby

  3. s3_direct_upload_microservice s3_direct_upload_microservice Public

    Ruby

Repositories

Showing 4 of 4 repositories
  • .github Public
    analog-m4/.github’s past year of commit activity
    0 0 0 0 Updated Jan 13, 2024
  • analog_fe Public
    analog-m4/analog_fe’s past year of commit activity
    JavaScript 1 0 3 0 Updated Jan 12, 2024
  • analog-m4/s3_direct_upload_microservice’s past year of commit activity
    Ruby 0 0 1 0 Updated Jan 12, 2024
  • analog_be Public
    analog-m4/analog_be’s past year of commit activity
    Ruby 0 0 11 1 Updated Jan 12, 2024

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…