Coder Social home page Coder Social logo

fave77 / taskone Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 12.25 MB

A todo webapp for creating and managing tasks! ๐Ÿ“

Home Page: http://ec2-43-204-103-180.ap-south-1.compute.amazonaws.com/

License: GNU General Public License v3.0

Dockerfile 1.91% JavaScript 95.14% HTML 2.35% CSS 0.59%
mern-stack task-manager todoapp todolist-application

taskone's Introduction

TASKONE

A todo webapp for creating and managing tasks! ๐Ÿ“

Application Link - http://ec2-43-204-103-180.ap-south-1.compute.amazonaws.com/

Features

  • Users can create profile, logout or delete profile
  • Users can create, view, update and delete tasks
  • Users can mention the following details while creating/updating tasks
    • Title (max 50 chars)
    • Description (max 300 chars)
    • Due Date
    • Priority - LOW, MEDIUM, and HIGH
    • Status - INCOMPLETE, COMPLETE, CANCELLED
    • Enable Daily Reminder (starting from a particular timestamp)
    • Enable Recurring Tasks by specifying Time, Frequency
  • Tasks are segregated into 3 columns based on Status
  • Tasks are sorted based on Priority and time of creation
  • Users cannot set Reminder for Completed Tasks
  • Users cannot edit Cancelled Task except for Status

Installation

Prerequisites

  • Docker (preferably version >= 25.0.3)
  • Docker Compose (preferably version >= v2.24.6)
  • Node (preferably version >= v20.14.0)

Please note, the app was tested with the above version and may or may not work for older ones. If you are facing issues, please try after updating!

Steps

The following steps are required to run and setup the project in local!

  1. Create a .env file at the root of the project, and add the following:
CACHE_PORT=6379
CACHE_PASSWORD=<provide-your-own-password>
CACHE_URL=redis://:${CACHE_PASSWORD}@cache-service:${CACHE_PORT}
DB_PORT=27017
APP_DATABASE_URL=mongodb://db-service:${DB_PORT}/taskone
SCHEDULER_DATABASE_URL=mongodb://db-service:${DB_PORT}/agenda
APP_PORT=8080
UI_PORT=3000
PUBLIC_VAPID_KEY=<provide-your-own-public-key>
PRIVATE_VAPID_KEY=<provide-your-own-private-key>
BASE_URL=<provide-your-base-url-e.g.-http://localhost>
  1. In order to set PUBLIC_VAPID_KEY and PRIVATE_VAPID_KEY, you need to generate your own VAPID key pairs:
# 1. Install web-push libary
npm i web-push -g

# 2. Generate key pairs
# Either run
web-push generate-vapid-key

# Or if you have npx installed
npx web-push generate-vapid-key
  1. The project can be executed with just one command:
# Run the project

# Either
npm run build

# Or
docker-compose up --build --remove-orphans

# Or
docker-compose up --build

# Or
docker compose up --build

Components

The project has 5 components

  • nginx-proxy - port 80
  • app-service - port 8080
  • ui-service - port 3000
  • cache-service - port 6379
  • db-service - 27017

Make sure, each one has been compiled and running successfully!

NOTE: If you have existing applications already running on these ports, please free them before you execute the build command

If you have made it this far without any issues, just head over to your browser, and type localhost and you will have your own personal taskone ๐ŸŽ‰

URLs

  • GET localhost -> ui-service
  • GET localhost/ping -> app-service (basic health check)
  • POST loalhost/api -> app-service (taskone APIs)
  • GET localhost/api-docs -> app-service (swagger docs)
  • POST localhost/subscribe -> app-service (push notification)

NOTE: You can also replace localhost with 127.0.0.1

Testing

Tests are added only for app-service!

You can run it using:

cd app-service/ && npm test

View

Login View

Empty Task View

List Task View

Create Task View

Edit Task View

Known Issues

  • Reminder Feature is implemented using Service workers in browsers, and for the push notification to work, Chrome requires SSL certification. Hence, this feature is not working as expected over HTTP.

  • Swagger Docs has certain security policies in place that require HTTPS. The docs are also not available over HTTP.

Please note, these issues only exist in the hosted application but its working fine in local environment.

In local env:

  • Reminder Feature has been tested on Safari
  • Swagger Docs are available in all browsers

License

The GNU GPLv3 - Priyabrata Biswas.

Happy Coding โ˜˜๏ธ

forthebadge forthebadge forthebadge

taskone's People

Contributors

fave77 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.