top of page
A completely functional, server-less, ticket service. Powered by AWS, this useful, fast service can be accessed at Requestr.org. Built from an Engineering perspective you can find the design document, demo video, and more below.

Requestr Quick Look (5min)

Quick Look
Features Demo

Requestr Features Demo (23min)

Don't want to watch the video? Log into either of these demo accounts at www.request.org/LogIn to poke around. Make tickets, groups, change permissions, and get acquainted with the service:

Username: mwatson

Password: DemoDemo3!

Username: ddare

Password: DemoDemo13!

Design Document

Requestr Design Document

Goals

The goal of this project was to make a functional ticket service that would be completely server-less, leveraging the power of AWS Services. My personal goals were to demonstrate my skills with AWS Services as well as my skills as a Software Engineer. I wanted to demonstrate my ability to create full services from scratch in very little time and demonstrate the skills that I have picked up from my time in the industry as a Software Engineer. I wanted Requestr to allow for any team or group of people who needed a platform to request and approve features, tasks, etc... to be able to do so with a fast service and easy to use UI.

Context

Requestor allows users to create an account, create groups, add other users to these groups, post tickets in their groups, manage roles in their groups, and manage tickets in their groups. The main idea here was, of course, for the entire program to be server-less, only using AWS services. With this in mind it would have been very easy to implement the entire system just saving groups and ticket info in a DynamoDB database and constantly querying or updating those entries through an Api Gateway. I wanted the design for this to instead be more ticket focused. A ticket's info is valuable and relevant up until it has been archived. I decided to mirror the life of a ticket using a state machine through AWS Step Functions. Each group created on Requestr would still be saved in a DynamoDB database, but each group would then have a corresponding state machine that each ticket made in that group would run on. Each ticket's info is stored only within whatever state it is currently on in the state machine and eventually when a ticket is archived, its execution in the state machine is terminated.  In summary, groups created on Requestr are saved to a DynamoDB database while ticket's entire lifecycle is represented as executions of a state machine. The State Machine built through AWS Step Functions can be found in the system architecture diagram below. 

System Architecture Diagram (Please zoom in to view each part)
requestrArcitectureDiagram.drawio-160.png
Use Cases
SignUp.drawio.png
LogIn.drawio.png
GetGroups.drawio.png
MakeGroup.drawio.png
JoinGroup.drawio.png
CheckMembership.drawio.png
LeaveGroup.drawio.png
KickOutMember.drawio.png
ManageMembers.drawio.png
GetGroupMembers.drawio.png
GetGroupsTickets.drawio.png
UpdateTicket.drawio.png
CreateTicket.drawio.png
Use Cases: Change Name, Change Password, View Profile, Recover Password

- The first three of these just validate a session with AWS Cognito and if the user provides a valid password corresponding to their username, they can just provide the new password or new name and Cognito will change them. 

- When a use clicks on their profile Cognito just checks that they have a valid session (i.e. they have logged in) and if the they do, it just returns all their info to be displayed.

- Recover password just has Cognito send a new verification code to the on-file email through AWS SES 

Timeline

To model a Software Engineering environment I gave myself 2 months of real time to complete the entire project. I planned for about 200 actual work hours (i.e. 25 work days) with the first 50 hours going towards front end design and implementation and the last 150 hours going towards the AWS engineering and integration. 

​

In the end I reached the end of the whole project in 123 hours (i.e. 15 work days). With the front end design and implementation taking about 40 hours and the AWS engineering (creation, testing, integration) taking the rest; about 83 hours.

API Reference

API Documentation for the project can be found here.

AWS Tech Demo

Requestr AWS Tech Demo (14min)

More Information

This project was built entirely from scratch on my own with the idea in mind of mimicking a Software Engineering scenario of having a deadline. I gave myself two months to complete the project and finished with time to spare. I logged all hours spent working and finished in about 123 hours which equates to roughly 15 working days or 2 weeks.  

​

Requestr is a simple request and approval ticketing service. Create groups for your team project, workflows, or for anything that needs a ticketing service. Each group can have unlimited number of members and all members can create tickets. You can make some members of the group power users (Admins) and they can approve, deny, and archive tickets. All tickets have a comment section for quick communication between requestors and power users. Groups can be public - Everyone can see all tickets - or private - Only power users and the requestor can see individual tickets. 

​

The system is completely server less and runs through AWS services like Api Gateway, Lambda, DynamoDB, Step Functions, Cognito and more. Requestr is fast, lightweight, and completely functional as a ticket service. 

logo512.png

The website is currently live and fully functional at www.requestr.org

social-media-github-computer-icons-logo-

123 hours logged working on this project.

Frontend: Developed with TypeScript & React.

Backend: Developed with AWS Services including CDK, API Gateway, Lambda, DynamoDB, Step Functions, S3, SNS, SES, CloudFront, Route53, CloudWatch, Cognito, IAM

Built entirely from scratch on my own.

bottom of page