- Register new account
- Login and Logout
- Edit their profile (at least name, username, password, and e-mail).
- Submit a new ticket optionally choosing a department (e.g., "Accounting").
- List and track tickets they have submitted.
- Reply to inquiries (e.g., the agent asks for more details) about their tickets and add more information to already submitted tickets.
- List tickets from their departments (e.g., "Accounting"), and filter them in different ways (e.g., by date, by assigned agent, by status, by priority, by hashtag).
- Change the department of a ticket (e.g., the client chose the wrong department).
- Assign a ticket to themselves or someone else.
- Change the status of a ticket. Tickets can have many statuses (e.g., open, assigned, closed); some may change automatically (e.g., ticket changes to "assigned" after being assigned to an agent).
- Edit ticket hashtags easily (just type hashtag to add (with autocomplete), and click to remove).
- List all changes done to a ticket (e.g., status changes, assignments, edits).
- Manage the FAQ and use an answer from the FAQ to answer a ticket.
- Upgrade a client to an agent or an admin.
- Add new departments, statuses, and other relevant entities.
- Assign agents to departments.
- Control the whole system. (?)
Languages
HTML
CSS
PHP
Javascript
Ajax/JSON
PDO/SQLite
The website should be as secure as possible.
SQL Injection prevention
XSS attack protection
CSRF attack protection
Sound password storage principles
Others
The design does not need to be top-notch but should be clean and consistent throughout the site.
It should also work on mobile devices.
Frameworks are not allowed.
- Tickets can have documents attached to them (both by clients and agents).
- Admins should be able to see key performance indicators and other statistics (e.g., number of tickets closed by agent, number of open tickets per day).
- Agents can belong to more than one department.
- Agents can see a client's history.
- Agents can watch tickets not assigned to them (e.g., when transferring a ticket, the agent can check a box stating that he still wants to follow the ticket).
- Tickets can be merged together or marked as duplicates from another ticket.
- Tickets can have to-do lists that must be completed before the ticket is closed.
- Tasks can also be assigned to agents.
- If you prefer, you can create your own additional requirements.
- Tiago Cruz - @Tiago27Cruz
- João Lourenço - @Tonevanda
- Tomás Xavier - @dratomitoma


