- Alexandros Papagiannis
- Erlantz Ramos Sanchez
- Farzan Imanzadeh
- Laura Voss
- Luiza Gretzk
- Luke Storey
- Stevie Spiegl
For the penultimate engineering project during Weeks 8 and 9 of the Makers Academy hybrid course, we were tasked with developing a Facebook clone, known as Acebook. Within a team of 7 developers we developed this version that we're proud to present.
https://lacebook.herokuapp.com/
[screenshot]
[screenshot]
- Express web framework for Node.js.
- Nodemon to reload the server automatically.
- Handlebars to render view templates.
- Mongoose to model objects in MongoDB.
- ESLint for linting.
- Jest for testing.
- Cypress for end-to-end testing.
- CSS for styling of the webpages.
- Install Node Version Manager (NVM)
Then follow the instructions to update your
brew install nvm
~/.bash_profile
. - Open a new terminal
- Install the latest version of Node.js, currently
18.1.0
.nvm install 18
- Fork this repository
- Rename this fork
- Clone the fork to your local machine
- Install Node.js dependencies
npm install
- Install an ESLint plugin for your editor. For example: linter-eslint for Atom and installing the
ES Lint
- Install MongoDB
Note: If you see a message that says
brew tap mongodb/brew brew install [email protected]
If you need to have [email protected] first in your PATH, run:
, follow the instruction. Restart your terminal after this. - Start MongoDB
brew services start [email protected]
- Start the server
npm start
- Browse to http://localhost:3000
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 acebook_test
MongoDB database,
so that integration tests do not interact with the development server.
- 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
We used a Trello board to keep track of the features we want to implement. We organised tickets amongst the team and moved the tickets accordingly to demonstrate at what stage that feature's at (To do/In progress/In review etc.).
- Standups every morning at 10:00
- Regro at 5:30 every evening
- Pair programming throughotu the whole project
- Regular check-ins with team members to make sure nobody was left behind
- Trello board for distributing work and staying on track
As a user,
so that I can join Acebook's vibrant community,
I would like to be able to sign up.
As a user,
so that I can use Acebook,
I would like to be able to log in.
As a user,
so I can choose how other users identify me,
I would like to be able to choose a username to display.
As a user,
so that I can express myself,
I would like to be able to publish a post.
As a user,
so that I know who is posting,
I would like to see a username attached to each post.
As a user,
so that I know who is posting,
I would like to see a profile picture attached to each post.
As a user,
so that I can share photos,
I would like to be able to publish photos.
As a user,
so that I can express how I feel,
I would like to be able to like posts.
As a user,
so that I can bo gack on what I liked,
I would like to be able to unlike the post.
As a user,
so that I can express myself,
I would like to be able to comment on posts.
As a user,
to interact with other users,
I would like to be able to see who commented on posts.
As a user,
so that I can have friends,
I would like to be able to send friend requests to other users.
As a user,
so that I can have friends,
I would like to be able to accept friend requests from other users.
- User can sign up, log in and log out
- User can post a post and delete it
- User can see all posts in reverse chronological order
- Sign up with invalid input
- Sign up with an already used email
- Sign in with invalid input
- Try to access timeline or profile page when logged out
- User can see only friends' posts on the timeline
- User can like and respond to individual comments