Skip to content

js-2507/Multi-User-Task-List

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Multi-User Task Tracker

A lightweight, secure, and mobile-responsive web application for managing tasks across users.
Built with Java 25 and SQLite.


Screenshots from a mobile phone browser above:

Features

  • Role-based access control: A separate interface for Admins and Users with their respective controls
  • Live progress tracking: Admins can see Users task progression
  • Mobile-friendly design: Looks good and easy to use on mobile phones as well as computers
  • Persistent storage: SQLite database remains safe and intact after updates or changes

Security Implementations

  • Session Management: Implemented secure UUID-based session tokens with HttpOnly cookies to prevent Session Hijacking and IDOR attacks.
  • SQL Injection Prevention: 100% coverage using PreparedStatements for all database interactions.
  • XSS Protection: Automatic HTML entity escaping for all user-generated content (usernames and task descriptions).
  • Access Control: Server-side verification of administrative privileges for all sensitive actions (adding users, clearing feeds).

Tech Stack

  • Language: Java (using the built-in com.sun.net.httpserver)
  • Database: SQLite 3
  • Frontend: Vanilla HTML5 and CSS3

Installation and Setup

  1. Prerequisites: Java 25 installed on server
  2. Clone the repo:

    git clone https://github.com/js-2507/Multi-User-Task-Tracker.git

  3. Add Dependencies: Download the sqlite-jdbc JAR file and add it to your classpath.
  4. To deploy, do this in the intellij project (or project directory) terminal on your local machine

    #1. Compile

    javac -cp "lib/*" src/*.java -d bin/
    #2. Create a simple JAR
    jar cfe chore-app.jar Main -C bin .

  5. Then send the .jar file and the lib folder to your server (in your folder for the service)
    you can use FileZilla or WinSCP for an easy GUI transfer or use the terminal
  6. To start the .jar file, enter

    java -cp "chore-app.jar:lib/*" Main

  7. (Optional) To make it a systemd service (for best availability in case of power outage/restarting)
    On your server, go to

    /etc/systemd/system and create a chore.service using sudo nano add this:

    [Unit] Description=Household Chore Tracker Service
    # Wait for the network to be ready before starting
    After=network.target

    [Service]
    # The user that will run the app (usually your username, replace user)
    User=user
    # The folder where your .jar and chores.db are located (replace filepath)
    WorkingDirectory=/home/user/filepath
    # The command to start your app
    ExecStart=/usr/bin/java -cp "chore-app.jar:lib/*" Main
    # Restart the app automatically if it crashes
    Restart=always
    # Optional: standard output logs
    StandardOutput=syslog
    StandardError=syslog
    SyslogIdentifier=chore-app

    [Install]
    # This tells Ubuntu to start the service during a normal boot
    WantedBy=multi-user.target

    Then do sudo systemctl daemon-reload and sudo systemctl enable chore.service and sudo systemctl start chore.service

How to Use

Service runs on port 8000, you can set up a reverse proxy and make a DNS record to attach a custom URL to make it easier to fnd
for web admin and use,
The admin can add users (and their usernames/passwords), add tasks for users, undo task progress, clear tasks for users, and see progress of all users tasks.
Default admin username is 'admin' and password is 'admin123$' (can be changed in Database.java file, line 28). Users can see only their tasks through login, and can mark tasks as complete.

License

Any contributions and improvements are appreciated!

About

A lightweight, secure, and mobile-responsive web application for managing tasks across users. Built with Java 25 and SQLite.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages