Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Work Management

A work management app for a 10-person team: a Home dashboard, a personal "My Tasks" inbox, per-project List/Board/Calendar views, a task detail panel with comments/likes/activity, and a Team directory.

Plain LAMP stack — PHP (PDO/MySQL, session-based login) on the backend, a dependency-free vanilla-JS single-page frontend on top. No Node/build step required; deployment is just copying files to a webroot and pointing Apache at public/.

Stack

  • PHP 8.x + PDO (pdo_mysql)
  • MySQL or MariaDB
  • Apache with mod_php (or php-fpm)
  • No frontend framework / no build step — public/assets/js/app.js is loaded directly by the browser.

1. Install packages (Ubuntu)

sudo apt update
sudo apt install -y apache2 php libapache2-mod-php php-mysql mysql-server
sudo a2enmod rewrite

2. Create the database

sudo mysql -u root <<'SQL'
CREATE DATABASE project_manager CHARACTER SET utf8mb4;
CREATE USER 'project_manager'@'localhost' IDENTIFIED BY 'CHANGE_ME';
GRANT ALL PRIVILEGES ON project_manager.* TO 'project_manager'@'localhost';
FLUSH PRIVILEGES;
SQL

mysql -u project_manager -p project_manager < db/schema.sql
mysql -u project_manager -p project_manager < db/seed.sql   # optional demo data

db/seed.sql seeds a placeholder 10-person team, 5 projects, and ~24 tasks so the app isn't empty on first load. Every seeded user's password is password123 — change these before going live, or skip the seed file entirely and create your own users (see step 5).

3. Configure the app

cp config/config.sample.php config/config.php

Edit config/config.php with your DB credentials (host/name/user/pass) and workspace name. config/config.php is gitignored — never commit real credentials.

4. Deploy the code

Copy the repo to somewhere Apache can serve, e.g. /var/www/project-manager, then point Apache's DocumentRoot at the public/ subdirectory (not the repo root — config/, includes/, and db/ must stay outside the webroot).

Example vhost (/etc/apache2/sites-available/project.senylrc.org.conf):

<VirtualHost *:80>
    ServerName project.senylrc.org
    DocumentRoot /var/www/project-manager/public

    <Directory /var/www/project-manager/public>
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/project-manager-error.log
    CustomLog ${APACHE_LOG_DIR}/project-manager-access.log combined
</VirtualHost>
sudo a2ensite project.senylrc.org
sudo systemctl reload apache2

Point the project.senylrc.org DNS record at this server, then set up TLS (e.g. sudo apt install certbot python3-certbot-apache && sudo certbot --apache -d project.senylrc.org).

5. Create your first real user

If you skipped db/seed.sql, create at least one user directly:

php -r 'echo password_hash("your-password", PASSWORD_DEFAULT), PHP_EOL;'
INSERT INTO users (name, email, password_hash, role, hue)
VALUES ('Your Name', 'you@example.com', '<hash from above>', 'Your Role', 280);

Then create at least one project (tasks always belong to a project):

INSERT INTO projects (name, hue) VALUES ('First Project', 250);

Project layout

config/          gitignored config.php (DB credentials) + a sample to copy
db/              schema.sql, seed.sql
includes/        PHP shared code (db connection, auth/session, JSON helpers)
public/          Apache DocumentRoot
  index.php      auth-gated app shell, embeds bootstrap JSON for the SPA
  login.php      login form + handler
  api/           JSON endpoints (tasks.php, comments.php)
  assets/        style.css + app.js (vanilla JS SPA, no build step)

Notes on scope

  • Single workspace, single MySQL database — sized for one ~10-person team, not multi-tenant.
  • All comments/activity for all tasks are embedded in the initial page load rather than paginated per task; fine at this team size, but would need pagination if task/comment volume grows significantly.
  • Task tags are read/display-only from the UI in this pass (seeded via SQL); there's no tag editor yet.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages