DOLLS COLLECTOR APP - Frontend
Description
Webapp that helps to organize your fashion dolls collection.
User Stories / MVP
404 - As a user I want to see a nice 404 page when I go to a page that doesn’t exist so that I know it was my fault
500 - As a user I want to see a nice error page when the super team screws it up so that I know that is not my fault
Homepage - As a user I want to be able to access the homepage so that I see what the app is about and login and signup
Sign up - As a user I want to sign up on the webpage so that I can see my profile, my collection and my wishlist
Login - As a user I want to be able to log in on the webpage so that I can get back to my account
Logout - As a user I want to be able to log out from the webpage so that I can make sure no one will access my account
Doll / Catalog:
- As a user I want to see the dolls catalog
- As a user I want to see the doll's details
User profile:
- As a user I want to see my profile
- As a user I want to update my profile
My Doll / My Collection / My Wishlist:
- As a user I want to see my dolls collection / wishlist
- As a user I want to add the doll to my dolls collection / wishlist
- As a user I want to delete the doll from my dolls collection / wishlist
- As a user I want to update my doll info
- As a user I want to see the sum I paid for my dolls and the difference between this sum and release prices sum
Backlog
List of other features outside of the MVPs scope:
Doll / Catalog:
- As a user I want to filter dolls by parameters
- As a user I want to search a doll
- As a user I want to see the doll's current price (from Ebay API) and the difference between release and current prices
User profile:
- As a user I want to sign up and log in with my social profiles (Facebook, Google)
- As a user I want to see another user profiles, collections, wishlists and selling lists
- As a user I want to contact to another user
My Doll / My Collection / My Wishlist:
- As a user I want to see the sum of currect prices of my collection (from Ebay API) and the difference between this sum and the amount I paid for my dolls
- As a user I want to add OOAK (One Of A Kind) dolls to my collection
- As a user I want to upload photos of my dolls
- As a user I want to have both private and public wishlists
- As a user I want to have alerts about Ebay listing of the dolls from my wishlist at several price
- As a user I want to have my selling list (public)
Models
User Model
{
email: { type: String, required: true, unique: true },
hashedPassword: { type: String, required: true },
username: { type: String, unique: true },
},
{
timestamps: true,
}
MyDoll Model
{
owner: { type: Schema.Types.ObjectID, ref: 'User' },
favOwner: { type: Schema.Types.ObjectID, ref: 'User' },
doll: { type: Schema.Types.ObjectID, ref: 'Doll' },
purchaseDate: { type: Date },
purchasePrice: { type: Number },
purchaseWay: { type: String },
condition: { type: String, default: 'Perfect' },
kit: { type: String, default: 'Complete' },
},
{
timestamps: true,
}
Doll Model
{
subBrand: { type: String },
name: { type: String },
character: { type: String },
mold: { type: String },
body: { type: String },
skinTone: { type: String },
hair: { type: String },
images: [{ type: String }],
collectionName: { type: String },
distributedBy: { type: String },
year: { type: Number },
editionSize: { type: Number },
releasePrice: { type: Number },
ebayQueries: [{ type: String }], // Backlog, depends on Ebay API
},
{
timestamps: true,
}
Routes (MVP) / API endpoints
Type/Model | Name | Method | Endpoint | Description | Body | Redirects |
---|---|---|---|---|---|---|
Auth | Me | GET | /me | Check session status | - | |
Auth | Sign Up | POST | /signup | Sign up a user | {email, password} | /catalog |
Auth | Log In | POST | /login | Log in a user | {email, password} | /catalog |
Auth | Log out | GET | /logout | Log out a user | - | |
Home | GET | / | Show home page | - | ||
Doll | Catalog | GET | /catalog | User sees the catalog | - | |
Doll | Doll Details | GET | /catalog/:dollID | User sees the doll details | - | |
User | Profile | GET | /profile | User sees his/her profile | - | |
User | Profile | PUT | /profile | User updates his/her profile | {username, email} | /profile |
MyDoll | My collection | GET | /mycollection | User sees his/her collection | - | |
MyDoll | Add doll to collection | POST | /mycollection | User adds the doll to his/her collection | {dollID} | /mycollection/:MyDollID |
MyDoll | Update doll info | PUT | /mycollection/:MyDollID | User updates his/her doll info | {purchaseDate, purchasePrice, purchaseWay, condition, kit} | /mycollection/:MyDollID |
MyDoll | Delete from collection | DELETE | /mycollection/:MyDollID | User deletes the doll from collection | - | |
MyDoll | My wishlist | GET | /mywishlist | User sees his/her wishlist | - | |
MyDoll | Add doll to collection | POST | /mycollection | User adds the doll to his/her wishlist | {dollID} | /mywishlist/:MyDollID |
MyDoll | Update doll info | PUT | /mywishlist/:MyDollID | User updates his/her doll info | {condition, kit} | /mywishlist/:MyDollID |
MyDoll | Delete from wishlist | DELETE | /mywishlist/:MyDollID | User deletes the doll from wishlist | - |