Skip to content

raphaella-rose/OPEN-BOOK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

400 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

By Team 5 (Raphaella, Osman, Benjamin, Kay, Ed)

Tech stack:

Diagrams

OVERVIEW

                                                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                                  β”‚                    β”‚
                                                  β”‚       ROUTES       │◄──────────────  HTTP Response
                                                  β”‚                    β”‚                  (HTML)
                                                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                            β”‚
                                                      Forward request to
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                     appropriate controller
 β”‚            β”‚                                             β”‚
 β”‚            β”‚                                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚            β”‚       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚                     β”‚
 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β—„β”€β”€β”€β”€β”€β”€β”€             β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                     β”‚
 β”‚  DATABASE  β”‚       β”‚             β”‚             β”‚    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”‚               HTTP Response
 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β–Ίβ”‚    MODELS   │◄─────────────    β”‚CONTROLLERSβ”‚    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ί  (HTML)
 β”‚            β”‚       β”‚             β”‚ read/write  β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β”‚
 β”‚            β”‚       β”‚             β”‚    data     β”‚                     β”‚
 β”‚            β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚                     β”‚
 β”‚            β”‚                                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                               β”‚
                                                              β”‚
                                                              β”‚
                                                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                                     β”‚                  β”‚
                                                     β”‚      VIEWS       β”‚
                                                     β”‚    (templates)   β”‚
                                                     β”‚                  β”‚
                                                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

MVC

                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
                   β”‚  CLIENT    β”‚       β”‚ ROUTES β”‚      β”‚ CONTROLLER  β”‚            β”‚  MODEL  β”‚                    β”‚ VIEW  β”‚
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”˜

                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚                 β”‚                  β”‚                 β”‚                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚                 β”‚                  β”‚                 β”‚                               β”‚                             β”‚
                 β”‚                 β”‚       GET        β”‚                 β”‚            Request            β”‚          HTML Home          β”‚
                 β”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                             β”‚
                 β”‚                 β”‚                  β”‚                 β”‚                               β”‚           INDEX             β”‚
                 β”‚      HOME       β”‚                  β”‚                 │◄───────────────────────────────       (list all shops)      β”‚
                 β”‚                 β”‚                  β”‚                 β”‚              HTML             β”‚                             β”‚
  Home Page      β”‚  ('/openbook')  β”‚                  β”‚    index.js     β”‚                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚                 β”‚                  β”‚                 β”‚
                 β”‚                 β”‚                  β”‚                 β”‚
                 β”‚                 β”‚                  β”‚                 β”‚
                 β”‚                 │◄──────────────────                 β”‚
                 β”‚                 β”‚     RESPONSE     β”‚                 β”‚          (database link)
                 β”‚                 β”‚                  β”‚                 β”‚findAllβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β”‚                 β”‚                  β”‚                 β”œβ”€β”€β”€β”€β”€β”€β–²β”‚                  β”‚     (user does not
                 β”‚                 β”‚                  β”‚                 │▼───────       Shop.js    β”‚      need to be signed
                 β”‚                 β”‚                  β”‚                 β”‚       β”‚                  β”‚      up to see lists)
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                         response





                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  CLIENT    β”‚       β”‚ ROUTES β”‚      β”‚ CONTROLLER  β”‚            β”‚  MODEL  β”‚                    β”‚ VIEW  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                    β””β”€β”€β”€β”€β”€β”€β”€β”˜

                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚                 β”‚                  β”‚                 β”‚                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚                 β”‚                  β”‚                 β”‚                               β”‚                             β”‚
                  β”‚                 β”‚       GET        β”‚                 β”‚            Request            β”‚          HTML Home          β”‚
                  β”‚     Users       β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                             β”‚
                  β”‚                 β”‚                  β”‚                 β”‚                               β”‚           INDEX             β”‚
                  β”‚ ('/users/new')  │◄──────────────────                 │◄───────────────────────────────         (Lists all          β”‚
    USERS         β”‚                 β”‚                  β”‚                 β”‚              HTML             β”‚          the posts)         β”‚
  (Sign up)       β”‚                 β”‚                  β”‚  sessions.js    β”‚                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚                 β”‚                  β”‚                 β”‚
                  β”‚                 β”‚       POST       β”‚                 β”‚
                  β”‚ complete form   β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”‚                 β”‚
                  β”‚ & submit        │▼──────────────────                 β”‚
                  β”‚                 β”‚     RESPONSE     β”‚                 β”‚          (database link)
                  β”‚                 β”‚                  β”‚                 β”‚create β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚                 β”‚                  β”‚                 β”œβ”€β”€β”€β”€β”€β”€β–²β”‚                  β”‚     (user needs to be
                  β”‚                 β”‚                  β”‚                 │▼───────      User.js     β”‚      signed up to post
                  β”‚                 β”‚                  β”‚                 β”‚       β”‚                  β”‚      or favourite a shop)
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                          response





                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”
                    β”‚  CLIENT    β”‚       β”‚ ROUTES β”‚        β”‚ CONTROLLER  β”‚            β”‚  MODEL  β”‚                  β”‚ VIEW  β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”˜

                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚                 β”‚                  β”‚                 β”‚                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚                 β”‚                  β”‚                 β”‚                               β”‚                             β”‚
                  β”‚                 β”‚                  β”‚                 β”‚            Request            β”‚                             β”‚
                  β”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€GET───────►│                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚                             β”‚
                  β”‚                 β”‚                  β”‚                 β”‚                               β”‚       HTML Sessions         β”‚
                  β”‚     Session     │◄────RESPONSE──────                 │◄───────────────────────────────                             β”‚
   Sessions       β”‚('/sessions/new')β”‚                  β”‚                 β”‚              HTML             β”‚                             β”‚
  (log  in)       β”‚                 β”‚                  β”‚   sessions.js   β”‚                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€POST──────►│                 β”‚
                  β”‚                 β”‚                  β”‚                 β”‚
                  β”‚                 ◄◄────RESPONSE──────                 β”‚
                  β”‚                 β”‚                  β”‚                 β”‚
                  β”‚                 β”‚     redirect/    β”‚                 β”‚          (database link)
                  β”‚                 β”‚   users/account  β”‚                 β”‚findOneβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                  β”‚                 β”‚                  β”‚                 β”œβ”€β”€β”€β”€β”€β”€β–²β”‚                  β”‚     (user needs to be
                  β”‚                 β”‚                  β”‚                 │▼───────      User.js     β”‚      signed up to post
                  β”‚                 β”‚                  β”‚                 β”‚       β”‚                  β”‚      or favourite a shop)
                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                          response









                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”
                     β”‚  CLIENT    β”‚       β”‚ ROUTES β”‚        β”‚ CONTROLLER  β”‚            β”‚  MODEL  β”‚                  β”‚ VIEW  β”‚
                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”˜

                   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”‚                 β”‚                  β”‚                 β”‚                               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”‚                 β”‚                  β”‚                 β”‚                               β”‚                             β”‚
                   β”‚                 β”‚                  β”‚                 β”‚            Request            β”‚                             β”‚
                   β”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€GET───────►│                 β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚           INDEX             β”‚
                   β”‚                 β”‚                  β”‚                 β”‚                               β”‚         (Lists all          β”‚
                   β”‚     Shops       │◄────RESPONSE──────                 │◄───────────────────────────────          the posts)         β”‚
    Users area     β”‚ ('/shops/new')  β”‚                  β”‚                 β”‚              HTML             β”‚                             β”‚
                   β”‚                 β”‚                  β”‚    shops.js     β”‚                               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                   β”‚                 β”œβ”€β”€β”€β”€β”€β”€β”€POST──────►│                 β”‚
                   β”‚                 β”‚                  β”‚                 β”‚
                   β”‚                 ◄◄────RESPONSE──────                 β”‚
                   β”‚                 β”‚                  β”‚                 β”‚
                   β”‚                 β”‚     redirect/    β”‚                 β”‚          (database link)
                   β”‚                 β”‚   users/account  β”‚                 β”‚findOneβ”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                   β”‚                 β”‚                  β”‚                 β”œβ”€β”€β”€β”€β”€β”€β–²β”‚                  β”‚     (user needs to be
                   β”‚                 β”‚                  β”‚                 │▼───────      User.js     β”‚      signed up to post
                   β”‚                 β”‚                  β”‚                 β”‚       β”‚                  β”‚      or favourite a shop)
                   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–²β”€β”€β”¬β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                                   β”‚  β”‚    response
                                                                   β”‚  β”‚
                                                                   β”‚  β”‚           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                                                   β”‚  └──────────►│                  β”‚     findOne
                                                                   β”‚              β”‚       Shop.js    β”‚     findMany
                                                                   └───────────────                  β”‚     findAndModify
                                                                                  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Wireframes:

Moodboard:

Result:

User stories

Using TDD, we implemented the following user stories:

As a user,
So I can ...
I'd like to be able to ...

Project management

We used Trello to manage our project.

View our card wall

Quickstart

Install Node.js

  1. Install Node Version Manager (NVM)
    brew install nvm
    
    Then follow the instructions to update your ~/.bash_profile.
  2. Open a new terminal
  3. Install the latest version of Node.js, currently 18.1.0.
    nvm install 18
    

Set up your project

  1. Fork this repository
  2. Rename your fork if desired to OPENBOOK-<team name>
  3. Clone your fork to your local machine
  4. Install Node.js dependencies
    npm install
    
  5. Install an ESLint plugin for your editor. For example: linter-eslint for Atom.
  6. Install MongoDB
    brew tap mongodb/brew
    brew install mongodb-community@5.0
    
    Note: If you see a message that says If you need to have mongodb-community@5.0 first in your PATH, run:, follow the instruction. Restart your terminal after this.
  7. Start MongoDB
    brew services start mongodb-community@5.0
    

Start

  1. Start the server
    npm start
    
  2. Browse to http://localhost:3000

Start test server

The server must be running locally with test configuration for the integration tests to pass.

npm run start:test

This starts the server on port 3030 and uses the OPENBOOK_test MongoDB database, so that integration tests do not interact with the development server.

Test

  • Run all tests
    npm test
    
  • Run a check
    npm run lint              # linter only
    npm run test:unit         # unit tests only
    npm run test:integration  # integration tests only

About

MAKERS -3rd engineering project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5