Skip to content

Commit c451d75

Browse files
authored
Update CONTRIBUTING.md
Fixing up contributing document, formatting, trimming unnessecary information, clarifying details, merging and dividing different sections.
1 parent 6194a58 commit c451d75

1 file changed

Lines changed: 84 additions & 145 deletions

File tree

documentation/CONTRIBUTING.md

Lines changed: 84 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -1,76 +1,60 @@
11
# IVDB Contributing Guidelines
22
### instructions for new developers to the Internet Videogame
3-
#### Please scan and comprehend prior to getting started on your fork
3+
Please scan and comprehend prior to getting started on your fork
44

55

66
# Index:
7-
1. [Ngrx](#Ngrx)
8-
2. [Styling](#Styling)
9-
3. [Documentation](#Documentation)
10-
4. [Site Architecture](#Site-Architecture)
11-
5. [Connective Tissue](#Connective-tissue)
12-
5. [Notes](#Notes)
7+
1. [About](#about)
8+
2. [Documentation](#documentation)
9+
3. [Site Architecturea](#site-architecture)
10+
4. [Feature Modules](#feature-modules)
11+
5. [Connective Tissue](#connective-tissue)
12+
6. [Notes](#notes)
1313

1414

1515
# About
16-
this is a medium-large sized angular application which uses Firestore as a back-end as a service.
16+
this is a medium-large sized Angular application which uses Firestore as a back-end as a service.
1717

18-
19-
# Ngrx
20-
and the following ngrx libraries are used in order to facilitate data flow and storage:
18+
NGRX and the following libraries are used in order to facilitate data flow and storage:
2119
- @ngrx/store
2220
- @ngrx/entity
2321
- @ngrx/effects
2422

25-
for this reason, It is expected that smart / container components should connect to the store
26-
by dispatching actions, and handle side effects (talking to external api) with effects.
23+
It is expected that smart / container components should connect to the store
24+
by dispatching actions, and handle side effects (talking to external APIs) with effects.
2725

2826
version 2.0 used angular and rxjs, so you may find lingering components which get data with service and observable subscription.
29-
These are fair game for refactoring, and it is good idea to check, but more than likely the case that they are not
30-
tightly coupled to other parts of the site.
27+
These are fair game for refactoring.
3128

32-
# Styling
3329
version 3.0 uses sass (indented syntax)
3430

3531
In general, I have been disregarding all but essential styling since adding ngrx.
36-
My reasoning is that my priority is getting data flow and event handling working solidly
37-
and having tests in place, then turning my attention towards non-functional requirements.
38-
39-
This is for personal reasons, but I also think its not a bad idea as a general practice for new contributors
40-
(feel free to open discussions with me, if you disagree)
4132

42-
Personally, I find myself getting stuck in obsessive cycles trying to get styles perfect,
43-
disregarding more priorty requirements which will ultimately make a bigger difference in the site.
33+
Bootstrap ^5.1.0 is being used
4434

45-
I also plan to employ bootstrap and angular material once moving on to architecting the production application layout.
46-
So keep this in mind, as styles which you do choose to apply currently may change, or worse conflict with these late stage enhancements.
35+
Not totally style related, but we are also using Angular Material (Dont reinvent the wheel!)
4736

4837
# Documentation
49-
See the documents in the top level directory, called "documentation" for all of these
50-
51-
The requirement sheet is a decent reference (made after initial discussions with client)
52-
but fairly limited in scope (we have advanced the initial ideas of the site quite a bit)
38+
See the documents sub-directory in the project root, called "documentation" for all of these
5339

54-
We have defined draft/incomplete class diagrams for the complete site.
40+
1) Requirement Sheet: is a decent reference (made after initial discussions with client) but fairly limited in scope.
41+
2) Class Diagrams: we have defined draft class diagrams for the complete site. Make sure you refer to the most up to date version.
5542
To view/edit the file, use the site "draw.io" and upload the file you wish to modify.
56-
Please be sure to tag me (and leading contributors) in a commit where you modify the UML (or make an issue or pull request about it)
57-
58-
Interaction (sequence) diagrams would be a welcome addition to the existing documentation.
59-
60-
Note that I havent been using the bug log as of version 3. If you intend on employing it, please erase the existing
43+
3) Sequence diagrams: We don't have any yet, they would be a welcome addition to docs, but we havent needed to make any yet.
44+
4) Bug log: I haven't used this in a while. If you intend on employing it, please erase the existing
6145
contents (from version 2) or clearly designate the distinction (if you wish to preserve the old bugs, for whatever reason)
6246

63-
# Site-architecture
47+
Please be sure to tag me (and leading contributors) in a commit where you modify the UML (or make an issue or pull request about it)
48+
49+
# Site Architecture
6450
This is roughly based around the feature modules which the app.module employs/ routes to
6551
```
6652
-modules
67-
-user.module // non auth related user features: profile, preferences, etc
53+
-user.module
6854
-admin.module
6955
-content.module
70-
-contrib.module
7156
-forum.module
7257
-game.module
73-
// core and shared are not routable components, you can learn more about them in "connective tissue" section (put a link here)
7458
-core.module
7559
-shared.module
7660
-store
@@ -95,32 +79,45 @@ This is roughly based around the feature modules which the app.module employs/ r
9579
-forum
9680
-thread
9781
-etc
82+
-components
83+
- dropdown
84+
- ...
9885
-app.module
99-
-
100-
```
101-
feature modules and their sub route/ components are elaborated below
102-
## Games:
103-
you can browse games and learn more about game-info (how IVDB categorizes games)
86+
-app.component
87+
-app-routing.module
10488
```
105-
./ // base component - welcome page for game.component
89+
Both core and shared modules are not feature modules, but rather serve their intended/typical purpose in a lazily loaded angular application
90+
91+
-core: Auth service lives here. Nothing else of note at this point. For pieces of the application that are meant to be loaded only once
10692

107-
./all // games.browse - view a select amount of games, supports filtering and pagination, with view of gameCover, title, price, quick link to buy/rate/review
93+
-shared: Components and other logic which we expect to use across feature modules, like a favorite button, carousel or data-table.
94+
shared also contains directives, (route) guards, validators, and pipes, as well as a module called material which intiailizes all needed material modules.
10895

109-
./:uid // games.view - when you click on a game from browse, shows more info like description, game-info, pictures of game play and a comment section
96+
Note there is also ```components``` directory, which holds components declared at the app level. Make sure to distinguish between this and shared module.
97+
While neither contains standalone components meant to be routable to, components declared in ```shared``` are accessible to any feature module, whereas
98+
thosed defined in ```components``` are only accessible to the root / app component.
11099

111-
./info // games.info - widget with tabs, to learn about game-info by type, as well as our defintions for different game info categories
112-
//lets avoid making routes more complicated than this
100+
# Feature Modules
101+
In all cases, the root of a feature module is an overview/ hub page for sub content of the module. it contains a rolling feed of all new or prioritized content in that feature module, as well as links and other information for understanding this data or traversing the sub routes of the feature module.
102+
103+
## Games:
104+
you can browse games and learn more about game-info (how IVDB categorizes games)
113105
```
114-
## Forum:
106+
./
107+
./all //view a select amount of games, supports filtering and pagination, with view of gameCover, title, price, quick link to buy/rate/review
108+
./:uid // when you click on a game from browse, shows more info like description, game-info, pictures of game play and a comment section
109+
./info // widget with tabs, to learn about game-info by type, as well as our defintions for different game info categories
110+
```
111+
112+
## Forum
115113
Access to IVDB forum, at highest level view- ie showing all forum families and a list of the current/active threads in them. in addition shows moderator / admin list, rules, top posters and links to games being discussed currently in a thread
116114
```
117-
./ // base component- welcome page for forum.component
118-
./forum/:id
119-
./forum/:forum_id/thread/:thread_id
115+
./
116+
./forum/:id // open a forum
117+
./forum/:forum_id/thread/:thread_id // view a thread
120118
```
121-
I need to review and possibly revise uml and models for forum. this is a 'nice-to-have' feature, dont prioritize its design and development till all other stuff is taken care of.
122119

123-
## Content:
120+
## Content
124121
Official content of IVDB includes news, streams (streaming-broadcasts and info), watchlists, official reviews and groups. Its posted on the homepage, typically tied to a game or other category related to gaming, and can be commented on and favorited by users
125122
```
126123
./
@@ -129,74 +126,20 @@ Official content of IVDB includes news, streams (streaming-broadcasts and info),
129126
./:uid
130127
```
131128

132-
## Contrib (contributing):
133-
Supports user contribution to the site, a portal through which users will rate, review, and otherwise interact with site, and have dashboards for organizing and managing their past contributions.
134-
135-
In the beta version of this site, contributution data will be fed to machine learning functions which build a hidden profile on the user in question and allow us to make reccomendations about games and content they will like or wont like, prioritizing and customizing their feed.
136-
137-
- total avenues for user contribution to IVDB:
138-
- rate a game
139-
- review a game
140-
- comment on a game, or piece of content
141-
- comment on another users profile or review
142-
- favorite a piece of content
143-
- react to a piece of content: like, dislike, laugh (emoji support like modern social media platform)
144-
- share a piece of content
145-
- create a thread
146-
- post in a thread
147-
- reply to a comment
148-
- suggest a feature or game - users should be able to provide feedback and feature requests, both through the forum (help and support threads), or suggestion form component
149-
```
150-
//contrib can be rerouted from user module, in case the user is examining their profile and wants to view past contributions:
151-
152-
user/contrib -> ./:username/own
153-
154-
./ //information and guidelines on contributing to IVDB / and a jumpuing off point where user can choose a option of how they want to contribte
155-
156-
./rate //browse all recent ratings added to site
157-
158-
./rate/game=[:uid] //see reviews submitted to a paticular game, submit your own
159-
160-
./rate/user=[:uid] //see the reviews submitted by a paticular user
161-
162-
// review follows this same route structure
163-
164-
./suggest // provide a suggestion to the site
165-
```
166-
167-
many smaller components (comment section, favorite, react) are disperased throughout the site, and ultimately, it may make sense to make the above routes
168-
subroutes of the user and game modules ie.
169-
170-
```games/:uid/<rate/review>``` to see game ratings
171-
172-
```user/contrib/review``` to see all contributions by a certain user.
173-
174-
175-
Then the smaller components can be added to shared module so you can simply add a comment to a game by viewing that game in the games module
176-
177-
In this case, contrib is more a design class then implemenation.
178-
179-
There can, for example, be a ```action/reducer/selector/effect``` chain for contribs, without there
180-
nescesarily being a module and sub route tree for contributions
181-
182129
## Admin
183130
Create,Read,Update and Delete hub for admin users to administer the site
184131
```
185-
./ // an overview of site activity and quick link portal to edit different areas of the site. maybe a dashboard that integrates the two
186-
132+
./
187133
./games // tab select games or game info to create, update or delete entities from these areas
188-
189134
./content // create, read, update, delete content by family/type
190-
191135
./users // view all users of the site, and their contributions, review threads, comments that are flagged, make decisions about banning certain users
192-
193136
./forum // administer forums, recruit, screen/train and assign moderators to threads. move or delete a paticular thread.
194137
```
195138

196139
## User
197140
a module for authenticated users to create profile, provide preference data and manage their contributions to the site. users authenticated and non authenticated can use the user module to view other user profiles and contributions (in cases where they arent blocked user or private profiles)
198141
```
199-
./ // informs of user features of IVDB, for authenticated users serves as a portal to navigate - profiles they follow, recent contrib by them or others
142+
./
200143
./profile/own // view your profile
201144
./profile/edit // create, update, delete a profile assigned to the auth user
202145
./profile/:uid // view a different user profile page
@@ -208,62 +151,58 @@ a module for authenticated users to create profile, provide preference data and
208151
```
209152

210153
# Connective-tissue
211-
## a quick rundown on the vocabulary employed throughout the IVDB:
154+
## a quick rundown on the vocabulary employed throughout the IVDB and anatomy of data types:
212155

213-
we possibly invented/ redefined some terms while creating the data model.
214-
215-
I am not an expert on videogames and their terminology, nor a big user of forums.
216-
So if the names of classes or properties do not suite you/ you believe them to be incorrect
217-
please contact me immedietly and we can discuss finding a more appropriate title.
218-
219-
1. games:
220-
games **must** have a
156+
## games
221157
- title
222158
- price
223-
- coverImageURL (please try to source it freely- think wikipedia commons)
159+
- coverImageURL (please try to source it freely- ie wikipedia commons)
224160
- about
225161
- categories
226162
- creators
227163
- platform, which informs
228164
- consoles
229-
game-info:
230-
is the term for the above 4 attributes of games. there meanings are self evident but please reach out if you dont understand
165+
166+
## game-info:
167+
4 families of attributes for classifying games (game-metadata)
231168
- category: broad families that group games - action, adventure, platformer, RPG, FPS, sports, city builder, arcade...
232169
- creator: game-development studios- activision, impression games, blizzard, etc
233170
- platforms: family which different consoles live in- nintendo, sony, microsoft, pc
234-
- VG_console: the name of the interface which describes a certain game console. we havent yet defined the actions, reducer and effects for adding, updating or deleteing a console
235-
content: official content posted to IVDB
236-
- watchlists: vary in flavor, but generally advise users about what games to pay attention to, like news but contain a variety of different game reccomendations
171+
- VG_console: the name of the interface which describes a certain game console.
172+
173+
## content:
174+
official (admin-posted) IVDB content
175+
- watchlists: vary in flavor, but generally advise users about what games to pay attention to, like news but
237176
- news: informs readers about a new console, an upcomming game release, new informtion regarding "gamer-culture"
238177
- streams: forcasts about popular streams, such as title, streamers, description, games being streamed, link to watch, expected stream times
239178
- official reviews: reviews of games posted by admin or site owner. these types of reviews have comment sections and appear on the home page
240-
- groups: users can join a group to recieve tailored info about topic they are interested in.
241-
contribution:
179+
- groups: users can join (or create) a group to recieve tailored info about topic they are interested in.
180+
181+
## contribution:
182+
IVDB content posted by account holding users, editable by author, moderators or admins.
242183
- rate: user can rate game 1-5 stars
243-
- review: user can provide a qualitative review of game. note a distinction here- admins and site owner review of games go in content, and are considered "official reviews", these are reviews displayed on homepage, users' ```contrib/reviews``` require a little bit more work to find (under ```games/:id/reviews```, or ```user/profile/contrib/reviews```)
184+
- review: user can provide a qualitative review of game.
244185
- comment: user can comment on a game, official site content, other users profiles
245186
- forum activity: user can post to threads, create new thread, apply to be mod or admin
246187
- suggestion: user can provide suggestions (to be reviewed by admins) about a new game to add, game info, etc
247-
users:
188+
189+
## users:
248190
have a (content-creation) privallege of 1 - 5.
249-
- guests : privallege 1 means you cannot leave comments on other users profiles, rate/review games, create a profile, access auth guarded routes
250-
- account-holders: privallege 2 means you can create an account, rate or review games, post to forums, create threads
191+
- guests : privallege 1 means you cannot leave comments on other users profiles, rate/review games, create a profile or access auth guarded routes
192+
- account-holders: privallege 2 means you can create an account, rate or review games, post to forums and create threads
251193
- moderators: privallege of 3, you can moderate forums and comment sections by being assigned to one.
252-
regular users need apply to begin screening process, and must be apporved by 2 moderators or an admin to begin the training process
253-
- admins: privallege of 4, administer all site content. they have the power to ban or block users, close down threads, erase posts, add new games, content, approve official reviews, etc...
194+
- admins: privallege of 4, administer all site content. they have the power to ban or block users, close down threads, erase posts, add new games and more.
254195
- Site-owner: privallege of 5, can override admin decisions, and make impactful decisions about how the site is ran. (needs further definition)
255-
Forums:
196+
197+
## Forums:
256198
- there are few forums, many threads within them, and many more posts within those
257-
- forum info is the broad category of site data which describes forums
258-
- (forum) categories : group forums, by default there are three forum categories- (game related, IVDB related, help and support)
259-
for example, help and support is a category where forums such as "change-log", "bug-reporting" and "feature requests" forums live
260-
each of these forums contain threads which users can use to request fixes and features for the forum, and developers can report modifications regarding the overall forum system
261-
- prefixes: mod and admin applied descriptors of a thread, which can be used to guide contributions or warn offending users that their thread is pending review
262-
- types: different threads can be typed to inform their format, for example you can choose "question and answer", "poll", "discussion". the default format is discussion
263-
- metadata: the names of the above descriptors
264-
- part of moderators jobs will be to provide community guidelines, which should be able to be pinned to the top of forums, threads, etc
265-
- regular users should become aware of the requirements to become mod or admin, and how to apply when these requirements are filled (ie, create 3 threads, reply to 20 user posts, no recent banning, etc...)
266-
admins:
199+
## forum info
200+
is the broad category of site data which describes forums (forum metadata)
201+
- (forum) categories : group forums, by default there are three forum categories- (game related, IVDB related, help and support)
202+
- prefixes: mod and admin applied descriptors of a thread, which can be used to guide contributions or warn offending users that their thread is pending review
203+
- types: different threads can be typed to inform their format, for example you can choose "question and answer", "poll", "discussion". the default format is
204+
205+
## admins:
267206
can adminster 4 seperate areas
268207
- game and game info
269208
- forum and forum info

0 commit comments

Comments
 (0)