Skip to content
/ Xylem Public

A microblogging site. MEN stack CRUD app for GA SEI-R 5/17 project 2.

License

Notifications You must be signed in to change notification settings

una-ada/Xylem

Repository files navigation

Xylem

Dependency Status

A simple micro-blogging site, developed to meet the requirements for GA SEI-R project 2 (MEN stack CRUD application).

Getting Started

Open up the deployed app at proj-xylem.herokuapp.com and you'll be greeted with a simple landing page, with a link to login with your Google account via OAuth:

Landing page

Once logged in, you'll see your dashboard, which will show the posts of users you follow, your own posts, and, most importantly, a form for publishing new posts:

Dashboard

Opening a post by clicking on either its timestamp or the comment icon will display the post with all of its comments and a form for adding a new comment:

Post display page

To see a user's profile, just click on their name on a post or comment. For your own profile, there is a link in the navigation menu at the top called "Profile." Profiles can show either the posts created by a user or the posts liked by that user, as well as a follow/unfollow button which is replaced by a link to edit your settings on your own profile:

User profile

Solutions

Xylem is a Node.js application using a MongoDB, Express.js, and Node.js (MEN) solution stack following a Model-View-Controller (MVC) pattern. The project is hosted by Heroku.

Model → MongoDB

The NoSQL database MongoDB is used for data storage, with Mongoose as a native JavaScript object document mapper (ODM). Schemas in the /models directory model the database as well as define validation functions. In production, the database is hosted by MongoDB Atlas (currently using a Google Cloud Platform (GCP) cluster).

View → Express, EJS

Server-side routing is managed by the Express.js web framework.

Views are preprocessed with Embedded JavaScript (EJS) templates (written in HTML with embedded tags for JS, similar to PHP) from the /views directory or served statically using the express.static() middleware from the /public directory.

Controller → Node

The server is all written in JavaScript and runs as a Node.js application. The package type is set to module such that modularity of the code is handled via ES 2015 modules rather than Node's default CommonJS modules.

Planning and Development

User Stories → Trello Board

This board describes features from a user's perspective, what the user might want to do (and sometimes why). Each card follows a general format of "AAU (As A User), I want to <action>, because <reason>" and falls into one of three categories:

  • Ice Box, for user stories that may be added in the future, but are not required for minimum viable product (MVP).
  • Current/MVP, for user stories that are required for MVP and need to be implemented before presenting the project.
  • Completed, for user stories that have been successfully implemented.

Features → GitHub Project

Where the Trello board is focused on user stories, this Kanban-style project board is dedicated to features. Each feature is given an "enhancement" issue on the repo and attached to the relevant cards on Trello using the GitHub Power-Up. These issues are also automatically added to the project board under "To do" until a pull request is made to close them.

Entity Relationship Diagram (ERD) → Lucid Document

This entity relationship diagram (or entity-relationship model) was created with the ERD template on Lucidchart, which uses crow's foot notation for cardinality. This is the initial pass on modeling the database for Xylem, outlining the most important models for basic functionality of the project: User, Post, Comment (embedded), Like (embedded), and Follow; additionally, there are two ice box models that will be necessary for future updates: Image and Notification.

This wireframe was done in Adobe XD, initially using the Wires wireframe kit. It outlines the user interface (UI) for the landing page, users, and posts, as well as basic user experience (UX) via a flow prototype.

Next Steps

Going forward, the client should run as a single page application (SPA) for better user experience (UX).

Further updated from there are planned as Version 1.1 (adding image uploads, user bios, and richtext) and 1.2 (adding notifications, tagging, and messaging).

About

A microblogging site. MEN stack CRUD app for GA SEI-R 5/17 project 2.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published