Git Product home page Git Product logo

dc-shoppingify's Introduction

๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป About me

Hello! My name is Felipe, and I'm a Frontend Developer.

Sometimes I write about Web Development on my blog.

๐Ÿ›  Tech stack

๐Ÿ’ป Projects

Experiments with graphics

Challenges

Courses

Study

dc-shoppingify's People

Contributors

felipeog avatar

Watchers

 avatar

dc-shoppingify's Issues

User stories


  • When I select the items tab, I can see a list of items under different categories
  • I can create a new item with name, category, note (optional), and image (optional)
  • When I create a new item, I can select one of the existing categories or create a new one
  • When I select an item, I can see its details and I can choose to add to the current list or delete the item
  • I can add items to the current list
  • I can increase the number of item in the list
  • I can decrease the number of item in the list
  • I can remove the item from the list
  • I can save or update the list with a name (the user can have only one active list at a time)
  • I can toggle between editing state and completing state
  • When I am at completing state, I can save my progress by checking the item
  • I can cancel the active list
  • When I try to cancel a list, I can see a confirmation notification
  • I can see my shopping history and I can see the details of it
  • I can see some statistics: top items, top categories, and monthly comparison. (Tips: use libraries like recharts for the graph)
  • I can search for items (optional)

Ideas

  • Onboarding to create multiple categories and items

Update entities

Entities


entity User {=psl
  id          Int         @id @default(autoincrement())
  username    String      @unique
  password    String
  itemsLists  ItemsList[]
  listItems   ListItem[]
  items       Item[]
  categories  Category[]
  createdAt   DateTime    @default(now())
  updatedAt   DateTime    @updatedAt
psl=}

entity ItemsList {=psl
  id        Int         @id @default(autoincrement())
  name      String      @default("Shopping list")
  listItems ListItem[]
  // "ONGOING" | "COMPLETED" | "CANCELLED" https://github.com/wasp-lang/wasp/issues/641
  state     String      @default("ONGOING")
  user      User        @relation(fields: [userId], references: [id])
  userId    Int
  createdAt DateTime    @default(now())
  updatedAt DateTime    @updatedAt
psl=}

entity ListItem {=psl
  id          Int       @id @default(autoincrement())
  amount      Int       @default(1)
  isDone      Boolean   @default(false)
  item        Item      @relation(fields: [itemId], references: [id])
  itemId      Int
  itemsList   ItemsList @relation(fields: [itemsListId], references: [id])
  itemsListId Int
  user        User      @relation(fields: [userId], references: [id])
  userId      Int
  createdAt   DateTime  @default(now())
  updatedAt   DateTime  @updatedAt

  @@unique([itemId, itemsListId, userId])
psl=}

entity Item {=psl
  id          Int         @id @default(autoincrement())
  name        String
  note        String?
  image       String?
  listItems   ListItem[]
  category    Category    @relation(fields: [categoryId], references: [id])
  categoryId  Int
  user        User        @relation(fields: [userId], references: [id])
  userId      Int
  createdAt   DateTime    @default(now())
  updatedAt   DateTime    @updatedAt

  @@unique([name, userId])
psl=}

entity Category {=psl
  id        Int       @id @default(autoincrement())
  name      String
  items     Item[]
  user      User      @relation(fields: [userId], references: [id])
  userId    Int
  createdAt DateTime  @default(now())
  updatedAt DateTime  @updatedAt

  @@unique([name, userId])
psl=}

Pages and sidebars

Pages

  • Login page
  • Signup page
  • Items
    • List items by category
    • Search items
    • Show item's details in the right-sidebar when the name's clicked
    • Add item to the items list when the + button's clicked
  • History
    • List items lists history
    • Show items list details when items list's clicked
  • Statistics
    • Top items chart
    • Top categories chart
    • Monthly summary chart

Sidebars

The left-sidebar and right-sidebar should be accessible on all pages

  • Left-sidebar
    • Show app logo at the top
      • Show user page
      • Show user details
      • Show logout button
    • Show page links in the middle
      • Show link names on the tooltip when hovering
    • Show shopping cart on the bottom
      • Toggle right-sidebar open and closed state
      • Show not done items count
  • Right-sidebar
    • Show current list
      • Show Add item button
      • Show pen button to toggle between editing and completing states
      • Editing state
        • Show items list name input
        • Show item's amount input
      • Completing state
        • Show item's is done toggle
        • Show cancel and Complete buttons
        • Show confirmation modal when cancelling a items list
    • Show item details
      • Show delete and Add to list buttons
    • Show item creation form
      • Show category select input
      • Show cancel and Save buttons

Create debugging pages

Pages that enable manipulation of all entities that belong to the authenticated user.


  • Category
  • Item
  • ItemsList
  • ListItem

Create entities

Entities


entity User {=psl
  id          Int         @id @default(autoincrement())
  username    String      @unique
  password    String
  itemsLists  ItemsList[]
  createdAt   DateTime    @default(now())
  updatedAt   DateTime    @updatedAt
psl=}

entity ItemsList {=psl
  id        Int         @id @default(autoincrement())
  name      String      @default("Shopping list")
  listItems ListItem[]
  state     String      @default("ONGOING") // "ONGOING" | "COMPLETED" | "CANCELLED" https://github.com/wasp-lang/wasp/issues/641
  user      User        @relation(fields: [userId], references: [id])
  userId    Int
  createdAt DateTime    @default(now())
  updatedAt DateTime    @updatedAt
psl=}

entity ListItem {=psl
  id          Int       @id @default(autoincrement())
  amount      Int       @default(1)
  isDone      Boolean   @default(false)
  item        Item      @relation(fields: [itemId], references: [id])
  itemId      Int
  itemsList   ItemsList @relation(fields: [itemsListId], references: [id])
  itemsListId Int
  createdAt   DateTime  @default(now())
  updatedAt   DateTime  @updatedAt
psl=}

entity Item {=psl
  id          Int         @id @default(autoincrement())
  name        String      @unique
  note        String?
  image       String?
  listItems   ListItem[]
  category    Category    @relation(fields: [categoryId], references: [id])
  categoryId  Int
  createdAt   DateTime    @default(now())
  updatedAt   DateTime    @updatedAt
psl=}

entity Category {=psl
  id        Int       @id @default(autoincrement())
  name      String    @unique
  items     Item[]
  createdAt DateTime  @default(now())
  updatedAt DateTime  @updatedAt
psl=}

Create basic actions

Actions


Category

  • createCategory
  • updateCategory
  • deleteCategory

Item

  • createItem
  • updateItem
  • deleteItem

ItemsList

  • createItemsList
  • updateItemsList
  • deleteItemsList

ListItem

  • createListItem
  • updateListItem
  • deleteListItem

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.