[CodeIgniter 4] Users & Groups Management

Job ID: 35112016

Budget: €750 – €1,500 EUR

Must be built on CodeIgniter 4 (preferably the latest at the time of writing, 4.2.9)
Ideally you will use the CodeIgniter's Model Class with MySQL/MariaDB and MCV pattern

The styling and layout of the UI is not important at the moment, as long as everything is contained inside a main wrapper div (per view / scene)

About Groups:
Groups is a collection of users. Here the ultimate goal will be to share content (think Facebook pages/groups).
Groups can be private (invite only)
Right now, groups are just for writing comments (in order by date) and sharing files
Group Stories:
As a user I want to be able to:
(a) create a group that (1) is open to anyone to join or (2) open to anyone to join once I approve or (3) private and invite only.
(b) write a comment in a group that I own or am a member of.
(c) Upload a file, view a shared file or delete a file that I have uploaded
(d) See comments written by other users
(e) Browse a list of groups

User Stories:
As a user I want to be able to:
(a) View my profile
(b) View other user's profiles
(c) Upload a file in general (my files)

File Stories:
As a user I want to be able to:
(a) View my uploaded files
(b) Share my uploaded files with (1) groups and (2) individual users (this can be achieved now by entering the email address/id of the other user - unless it's quicker to add in a typeahead)

Task Stories:
As a user, I want to be able to:
(a) Create a task (Task name, severity, description ckeditor/tinymce field, date required)
(b) Mark the task as [Open | In Progress | Done] (represented numerically in database)
(c) Assign the task to a user (typeahead required)

Soft Delete is required for all data
Examples of Database Tables:

Users
uuid (user id) | first name | last name | email | deleted

Groups has members
id | group id | user id | is admin | deleted

Groups
uuid (group id) | group name | private group

Files
uuid (file id) | file name (friendly name) | file path (use generated name) | File uploader (user id) | downloads (number of)

Group has Files (this is a record of which files are available to which groups)



public facing assets under:
/assets/backend/css /assets/backend/js /assets/backend/image /assets/backend/vendor
Related categories: PHP JavaScript Codeigniter MySQL HTML