-
Notifications
You must be signed in to change notification settings - Fork 0
Define a normalized schema for the fashion industry #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This commit defines some basic fashion data models that I think will be useful to aggregate for an objective analysis of what to purchase.
d44c1d9 to
c936907
Compare
This commit fleshes out a bunch more functionality related data models to my Prisma schema. The goal for this release is to get all the information already available to the user on other e-commerce sites on my site. Next, I'll start to work on adding additional functionality.
This commit updates our seed script and creates an automatic Prisma migration file for our latest fashion data model additions.
This commit replaces the category model with a new style data model that acts more like your typical issue tracking tool's "labels" feature than breadcrumb based categories. This new style data model still preserves label hierarchy; any number of styles can be arbitrarily nested underneath each other (e.g. tops > t-shirts > v-neck). This commit also introduces a new sex enum to indicate the original intended sex for sizes. This can be used to query products that have sizes for a specific sex pretty easily.
This commit creates a new `scraping` project directory and corresponding TS build configurations to implement some very basic web scraping to populate our database with data from large retailers (Neiman Marcus, Nordstrom, etc).
a02fec0 to
2297545
Compare
2297545 to
ba6f146
Compare
This commit makes it so that a single product can be in many products (alongside the existing code that enables a collection to have many products). A single product may be in many collections (as seen on many products sold on GOAT).
This commit adds `pino` logging and uses the `user-agents` package to attempt to trick PerimeterX into thinking we're a real user by setting a realistic `User-Agent` request header. This attempt was to no avail and I'm still getting Captchas, so I'm going to be trying to use the Puppeteer stealth plugin next. If that fails, I'll resort to copying my JQuery code into my browser console directly and simply downloading the resulting JSON. That process would be feasible for my goals right now.
This commit introduces a few changes to our Prisma schema: - brand tiers are now a separate enum instead of an int; - similarly, product levels are now a separate enum instead of an int; - prices can have many sizes (e.g. primary markets usually have a single price regardless of size).
This commit updates the join page and various other utility functions used by the front-end to work with the new user model (that contains required name and username fields).
This commit removes the pages from the Remix Notes App example (as the data model no longer exists in our updated Prisma schema).
This commit updates the `createAndLogin()` Cypress helper function to use the new user data model that requires name and username fields.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The aim of this PR is to define a normalized PostgreSQL schema for the fashion industry using Prisma's schema syntax (for easier portability and first-class TS support). The ultimate goal of this project is to create an interface that I can use to objectively rank and queue up high fashion purchases. I want an organized browser of the world of fashion.
Ex: (Top-down view of EVERYTHING about a product). It would be super cool IMO to open a product page and, in addition to seeing sizing, images, modeling, prices (from the various retailers that stock said item), one could also see the designer who made it (and easily see what else that designer has made and what other companies that designer has worked for), the company that owns the product's brand (and recent financial news regarding said corporation), etc.
Ex: (Product comparisons like Apple). It could also be cool to be able to match up similar products from different brands (as most brands' ready-to-wear collections will typically follow similar trends and thus contain similar pieces) in a side-by-side feature comparison view (similar to how you can compare different Apple products before making a decision on which one to buy): e.g. you could open up a Dior sweater and a GUCCI sweater side-by-side and make your purchase decision not only based on price or material sourcing or factory location or designer but also by the brand's reputation index (a.k.a. if resale value might increase) or a corporations climate change policies (or the lack thereof).
To implement features like that ☝️ , I'll need a really good database schema. And then all that needs to be done is: