Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

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---

Prerequisites

  • Local Machine: Java Development Kit (JDK 25) and Git installed.
  • Server: Java Runtime Environment (JRE) or JDK installed.

1. Clone the Repository

Clone the project files to your local development machine and navigate into the project root:

git clone [https://github.com/js-2507/Multi-User-Task-List.git](https://github.com/js-2507/Multi-User-Task-List.git) cd Multi-User-Task-List

2. Verify External Dependencies

Ensure that your project's local dependency directory contains the necessary .jar archive files for the database driver and security features:
sqlite-jdbc-*.jar

Build the Executable JAR Locally

Run the following commands inside your local project directory or IntelliJ IDEA built-in terminal to compile the source code and pack it into a portable package:
Step 1: Compile all Java source files into a 'bin' distribution directory
javac -cp "lib/*" src/*.java -d bin/
Step 2: Create an executable JAR archive targeting the Main entrypoint
jar cfe chore-app.jar Main -C bin .

4. Transfer Files to Your Server

On your server, make a directory for the service, make note of it for later
Deploy the generated application artifact along with its required dependency directory to your target production server environment using an SFTP client (such as FileZilla or WinSCP):

5. Executing the Application on the Server

Option A: Running in the Foreground (For Testing)

This locks your terminal window to the process. Closing your terminal or disconnecting from SSH will stop the application:
java -cp "chore-app.jar:lib/*" Main

Option B: Running in the Background (Persistent)

To run the service silently in the background so it keeps executing even after you close your terminal or log out of your SSH session, use the nohup command:
nohup java -cp "chore-app.jar:lib/*" Main > server.log 2>&1 &

Production Deployment (systemd Service)

To ensure the chore management service remains highly available, runs silently in the background, and automatically recovers from server reboots or system power outages, configure it as an official Ubuntu system service.

1. Create a new service tracking definition file:
sudo nano /etc/systemd/system/chore.service

2. Populate the configuration layout below (make sure to replace user and the companion working paths with your actual server account environment configurations):

[Unit]
Description=Household Chore Tracker Service
After=network.target

[Service]
User=user
WorkingDirectory=/home/user/chore-app
ExecStart=/usr/bin/java -cp "chore-app.jar:lib/*" Main
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=chore-app

[Install]
WantedBy=multi-user.target

3. Reload the tracking manager engine, flag the chore tracking script to start during the initial boot sequence, and engage the service right away:

sudo systemctl daemon-reload
sudo systemctl enable chore.service
sudo systemctl start chore.service

4. Confirm that your deployment profile launched successfully without active system blockages:

sudo systemctl status 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

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages