Skip to content
This repository has been archived by the owner on Dec 17, 2023. It is now read-only.

Another Todo app that can auto-select your top priority todos based on your capacity, equipped with Typescript, React, Next.js, Tailwind CSS, Recoil and more.

License

tpatalas/tp-next-todos

Repository files navigation

Auto-Prioritized Todo Application

Test Build-push-docker-image Deploy-docker-image Resource Purge

License Last Commit Project Status

This auto-prioritized todo application is built using Next.js and Docker. It includes an algorithm that automatically prioritizes tasks, filling the Today's Focus section based on this prioritization. The application adjusts to each user's task handling capacity, defaulting to a minimum of seven tasks.

Note: Demo-session mode is currently active, allowing unauthenticated users to explore CRUD operations without network requests to a remote database. Please note that changes made during this session will not persist unless the user signs in.

Table of Contents

Tech Stack (core)

React Next.js Typescript

Recoil TailwindCSS HeadlessUI Next-Auth

Jest React-testing-library

Mongoose Eslint Prettier

Infrastructure

Google Cloud Run Google Secrets Manager Google Artifact Registry Google VPC Network

Github Secrets Github Actions

Cloudflare Cloudflare

Cloudflare R2 MongoDB

Important: As of May 15, 2023, Google has deprecated the Container Registry. Consequently, containers have been transitioned to the Artifact Registry. Correspondingly, GitHub Actions workflows have been updated to reflect this change.

Features

1. Automatic todo prioritization

Utilizes a Priority Rank Score algorithm to intelligently prioritize todo items.

Note: Priority Rank Score (PRS) computes and rank the most prioritized item.

2. Unified State Management

Seamlessly integrates server and client-side states using a single state hook.

3. Email and OAuth authentication with Auth.js (aka Next-Auth)

Provides email authentication via magic links and supports OAuth with Google and Github. (Note: Credential authentication is currently disabled.)

4. CRUD Operations

Facilitates CRUD operations for labels, todo items, and notes, with support for due dates, various priority levels, and task completion.

5. Interactive Demo-Session

Enables users to explore CRUD operations in a default demo session, no authentication required.

6. CI/CD Pipeline

Leverages GitHub Actions for effective Continuous Integration and Continuous Deployment.

7. Unit/Integration testing

Maintains high software standards via comprehensive unit and integration tests, embedded within the Continuous Integration process. (Note: Additional tests are currently being implemented as part of project restructuring.)

Project Status

This project is currently under active development. New features and improvements are being introduced regularly.

Installation

Clone the repository to your favorite directory

  1. Clone the repository by running the following command:
git clone https://github.com/tpatalas/tp-next-todos.git

Deployment

Deployment is automated via pre-configured workflows in GitHub Actions.

However, you'll need to complete preliminary configurations in the following areas:

  1. Google Cloud Run
  2. Google Cloud Platform IAM (Service Account with proper roles)
  3. Google Cloud Secret Manager
  4. GitHub's Environment and Secret Variables

Please be aware that this README does not provide detailed instructions for these setup procedures.

Resources

  1. Deploy Next.js App into Google Cloud Run(GCR) with Docker
  2. Manage sensitive information to Google Cloud Secret Manager
  3. Troubleshooting Google Cloud Run

License

This project is licensed under the terms of the MIT License. See the LICENSE file for details.