[CodeIgniter 4] Users & Groups Management
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
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