https://github.com/samsamskies/gist-clone
Project to practice program interface design
https://github.com/samsamskies/gist-clone
Last synced: 10 months ago
JSON representation
Project to practice program interface design
- Host: GitHub
- URL: https://github.com/samsamskies/gist-clone
- Owner: SamSamskies
- License: mit
- Created: 2018-10-25T02:48:08.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-11-05T08:29:14.000Z (over 7 years ago)
- Last Synced: 2025-10-07T13:05:33.080Z (10 months ago)
- Language: JavaScript
- Homepage:
- Size: 45.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
DISCLAIMER: If you are looking at this repo for some reason, I do not recommend using Sequelize like I did. I just wanted to try it out. I'd recommend using Knex instead.
# User stories
- [ ] signup
- [ ] login
- [ ] view summaries of all gists
- [ ] search for gist
- [ ] create gist (public/secret)
- [ ] add file to gist
- [ ] delete file from gist
- [ ] view gist
- [ ] edit gist
- [ ] delete gist
- [ ] star gist
- [ ] download gist
- [ ] view summaries of all gists
- [ ] view summaries of all forked gists
- [ ] view all starred gists
# Logical model
## Entities
* Users
* Gists
* Revisions
* Files
* Diffs
## Relationships
### users <=> gists
* Users can have many gists
* A gist belongs to one user
### gists <=> revisions
* Gists must have at least one revision and can have many revisions
* A revision belongs to one gist
### revisions <=> files
* Revisions must have at least one file and can have many files
* A file belongs to one revision
### files <=> diffs
* Files can have one diff
* A diff belongs to one file
## Attributes
### users
* username*
* password*
* email*
* created_at*
* updated_at*
### gists
* user_id*
* description
* num_stars (default 0)
* is_secret (default false)
* created at*
* updated at*
### revisions
* gist_id*
* created_at*
### files
* revision_id*
* name*
* content*
* created_at*
### diffs
* file_id*
* content
## Invariants
* Must have an account to create a gist
* Gist must always have at least one revision
* Revisions are immutable
* Files are immutable
* Diffs are immutable
* If gist is secret, hide gist from search engines