A basic twitter clone built to demonstrate the full stack 🥞 (client, server, database).
With the following features:
- Cats can send a mew 😸✉️
- Cats can see all mews that have been sent 😻🗂
- 📝 Diagram the Full Stack
- 🔎 Differentiate between Client and Server
- ⌨️ Get user input on the Client
- ➡️ Send user input from the client with fetch to the server
- 🗃 Store data in a database
- 🔍 Retrieve data from a database on the Server
- ⬅️ Retrieve data from a server on the client using Fetch
- 🙈 Hide/Show elements on the client
- ✨ Add elements to the page on the client
- 🚀 Deploy the client with now.sh
- 🚀 Deploy the database with mlab
- 🚀 Deploy the server with now.sh
- Create client folder
- Setup index.html
- Bring in Skeleton CSS
- Create Header
- Create form
- Name
- Content
- u-full-width to both inputs
- Listen for form submit
- Hide the form
- Show loading spinner
- Get data from form and log it
- ✅ Get user input on the Client
- ✅ Hide/Show elements on the client
- Create server folder
- npm init -y
- npm install express morgan
- Setup index.js
- Add GET / route
- Add POST /mews route
- log out req.body
- fetch POST /mews with form data
- See the CORS error and revel in this moment
- ✅ Send user input from the client with fetch to the server
- npm install cors
- Make sure the server is recieving the data
- Add JSON body parser middleware
- Validate name and content
- Must be a string
- Cannot be empty
- If not valid
- Error code 422
- Invalid mew, must contain name and content
- Setup DB Connection
- npm install monk
- connect to db
- create document collection (mews)
- If Valid
- Create mew object with
- name, content, created_date
- Insert into DB
- Respond with created mew object
- Create mew object with
- ✅ Store data in a database
- Log out created Mew after POST request
- Show the form
- Hide loading spinner
- GET /mews
- Respond with mews from DB
- ✅ Retrieve data from a database on the Server
- fetch GET /mews
- Iterate over array
- Append each to page
- Reverse before appending
- Show the form
- Hide loading spinner
- fetch GET /mews after creating a mew
- ✅ Retrieve data from a server on the client using Fetch
- ✅ Hide/Show elements on the client
- ✅ Add elements to the page on the client
- npm install bad-words
- Use filter before inserting into DB
- npm install express-rate-limit
- Limit to 1 request every 15 seconds
- ✅ Deploy server with now
- Setup environment variables
- Database connection
- process.env.MONGO_URI
- Database connection
- ✅ Show mlab
- Deploy with environment variable
- now -e MONGO_URI=@meower-db
- Add alias
- Setup environment variables
- ✅ Deploy client folder with now
- Set API_URL based on hostname
- Add comments/replies to a mew
- User Accounts
- Don't just have the user enter their name
- Sign up/Login
- User Profiles
- Only show mews from a given user
- Search Mews
- Hashtags
- User @mentions
- Realtime feed of mews