Authors: George Mead, Katy Roffe, Barrett Nance, Sarah Creager, Justin Hamerly
Deployed Server: Heroku
Whiteboard: Miro
Project Management: GitHub Projects
npm install
- base-64
- bcrypt
- cors
- dotenv
- express
- jest
- jsonwebtoken
- pg
- morgan
- sequelize
- sequelize-cli
- sqlite3
- supertest
SAMPLE ENV
PORT=3001
DATABASE_URL=sqlite:memory
SECRET=secretstring
Treat Your Elves is an application to simplify the secret santa process. This app allows a group or an organization to create members, allow those members to create wishlists, and randomly assigns each member a secret santa.
Treat Your Elves alleviates the stress of planning and organizing a Secret Santa gift exchange! It does all the work for you, randomly assigning each member a Secret Santa within the group and granting them visibility to that user's wishlist. No more accidentally finding out who your Secret Santa is or wondering what in the world you are going to buy for your person! Cozy up and spend your time enjoying the holidays, while we simplify the process for you!
Treat Your Elves utilizes a PostreSQL database to secure client data and ACL middleware to ensure no sneaky little elves can alter user groups or wishlists without proper permissions as assigned by the group admin.
- Models for
users
andgroups
- Database association between the
group
anduser
- Users assigned a role of either
admin
oruser
- Database association between the
- Users will have a wishlist
- Authentication & Authorization
- Requires users to be logged into app to make any changes
- Limits the user to specific permissions on CRUD routes based on assigned role
- Global: Ability to create users and user roles
- Admins: Ability to create/read/update/delete groups and wishlists
- Users: Ability to create/update/delete personal wishlists and read other group user wishlists
- Ability to assign a secret santa to user / randomizing function
As a group member I want to be able to add items to my wishlist for my secret santa to view
Feature Tasks:
- User can add an item to their wishlist
- All users in the group will be able to view all user wishlist
Acceptance:
- When the user searches for an item, they can click an add button, and the item will be added to their wishlist in a database
- When a group member is logged in they will see the wishlist of their secret gift recipient
As a group administrator I want to be able to add my group members to the secret santa event
Feature tasks:
- Admin can create a group and add users to the group
- Admin has privileges to add and remove members
- Users cannot add members/can request invitation for new members
Acceptance:
- The admin has an interface for adding and removing members
- When members are added or removed, the group member list will update
- Users have a request button, and when they request an add to the group, the admin will receive a request to approve or deny the request
As a group admin, I want to be able to randomly assign everyone in the group a unique member of the group as their secret santa
Feature tasks:
- Each member of the group is assigned a unique secret santa
- There are no duplicate secret santas
- You will not be assigned yourself as your secret santa
Acceptance:
- Group members will each be assigned a random secret santa using an array
- This will ensure that each member is tied to another unique member
- The member on the end of the linked list will be linked to index[0] of the array
As a secret santa, I want to be able to revisit the app to view any updates or changes made to my assigned partner
Feature Tasks:
- Wishlists will be stored on a PostreSQL database
- The database can receive CRUD requests to make changes and view wishlists
Acceptance:
- When doing CRUD requests, the PostreSQL database will reflect the changes
- Status messages will be sent back upon successful/unsuccessful database requests
As an app user, I want to be able to log into my app and keep my data secure
Feature Tasks:
- Authentication and authorization for group members and administrators
- User roles and capabilities to define appropriate CRUD capabilities
Acceptance:
- An admin will be able to do all CRUD methods when it comes to managing the users in the group
- A user will only be able to view other members and update their own wishlists
- Jacob Knaack
- Audrey Patterson