Giter Site home page Giter Site logo

beebeeoii / do-gether Goto Github PK

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

Simple and clutter-free task management with friends

Home Page: https://do-gether.jiaweilee.com

HTML 0.27% CSS 0.30% TypeScript 64.14% Go 34.91% Dockerfile 0.39%
todo task social project-management todolist tasks task-manager

do-gether's Introduction

Do-gether

Do-gether is a self-host task management application that seeks to spice things up your to-do list a little bit with friends!

Features

  • Create accounts and login from anywhere to view your tasks
  • Create custom lists to group your tasks
  • Create, edit or delete tasks
  • Introduce tags to your tasks for ease of organisation, search and filter
  • Prioritise tasks with 3 levels of priority
  • Drag to sort and reorder tasks to your liking
  • Include due dates, planned start and end dates to stay ahead of deadlines
  • Add friends and complete tasks together
  • View friends' tasks to peek into their schedule
  • Fully open-source and self-hosted

Getting started

Clone the repository and you may choose to run it via docker or on bare metal.

Docker

Simply run

docker-compose up --build

in the directory with the docker-compose.yml.

Localhost

You would need the following 3 services:

  1. PostgreSQL database
  2. Go backend
  3. React frontend

PostgreSQL database

Download and initiate a PostgreSQL database from their webpage.

By default, Do-gether backend connects to the PostgreSQL database as do-gether-user with password do-gether-password.

CREATE USER do-gether-user WITH PASSWORD 'do-gether-password';`

A database do-gether in PostgreSQL is required for Do-gether to work properly as all data will be stored in that database.

CREATE DATABASE do-gether;

The following 3 tables will be used to store all data accordingly: lists, tasks, users.

To create the lists table:

CREATE TABLE lists (
    id VARCHAR(20) NOT NULL PRIMARY KEY,
    name VARCHAR(20) NOT NULL,
    owner VARCHAR(20) NOT NULL,
    private BOOLEAN NOT NULL,
    members VARCHAR(20)[] NOT NULL
);

To create the tasks table:

CREATE TABLE tasks (
    id VARCHAR(20) NOT NULL PRIMARY KEY,
    owner VARCHAR(20) NOT NULL,
    title TEXT NOT NULL,
    tags VARCHAR(20)[] NOT NULL,
    "listId" VARCHAR(20) NOT NULL,
    "listOrder" INTEGER NOT NULL,
    priority SMALLINT NOT NULL,
    due BIGINT NOT NULL,
    "plannedStart" BIGINT NOT NULL,
    "plannedEnd" BIGINT NOT NULL,
    completed BOOLEAN NOT NULL
);

To create the users table:

CREATE TABLE users (
    id VARCHAR(20) NOT NULL PRIMARY KEY,
    username VARCHAR(20) NOT NULL UNIQUE,
    password TEXT NOT NULL,
    friends VARCHAR(20)[] NOT NULL,
    outgoing_req VARCHAR(20)[] NOT NULL,
    incoming_req VARCHAR(20)[] NOT NULL
);

Go Backend

Ensure you have Go installed. Navigate to ./src where the backend code resides. Then compile the source code.

go build

Spin up the backend server by running the compiled binary.

Alternatively, you may run

go run main.go

React Frontend

Ensure you have Node installed. Navigate to ./src-ui where the frontend code resides.

Install all packages, build and serve

npm install
npm run build
npm install -g serve
serve -s build

Self-host

Same instructions as hosting locally, except that you will have to change the BASE_URL under adapter.tsx to the URL of your server.

Contributing

Do-gether is far from finished. Any contribution is greatly appreciated. Please submit an issue or fork this repo and submit a pull request if necessary.

do-gether's People

Contributors

dependabot[bot] avatar

Watchers

 avatar

do-gether's Issues

ui: friend profile icon not showing upon adding to a list

Current Behaviour:

After adding a friend to a list, profile icon of that friend is not shown automatically. It requires a refresh before it shows.

Recommended Behaviour:

Profile icon of that friend shows upon adding to a list.

Additional Information:

image

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.