[
  {
    "path": ".gitignore",
    "content": "node_modules\n/server/public"
  },
  {
    "path": "README.md",
    "content": "# Microposts\n\n> Example of a fullstack app using Vue.js, Express and MongoDB. You will need to edit the MongoDB connection string in server/routes/api/posts.js to your own.\n\n## Quick Start\n\n```bash\n# Install dependencies\nnpm install\n\n# Start Express Server: http://localhost:5000\nnpm start\n\n# Start Vue DevServer: http://localhost:8080\ncd client\nnpm run serve\n\n# Build for production (Will build into server/public, ready for deployment)\ncd client\nnpm run build\n```\n\n## App Info\n\n### Author\n\nBrad Traversy\n[Traversy Media](http://www.traversymedia.com)\n\n### Version\n\n1.0.0\n\n### License\n\nThis project is licensed under the MIT License\n\n\n#the css used in the video\ndiv.container {\n  max-width: 800px;\n  margin: 0 auto;\n}\n\np.error {\n  border: 1px solid #ff5b5f;\n  background-color: #ffc5c1;\n  padding: 10px;\n  margin-bottom: 15px;\n}\n\ndiv.post {\n  position: relative;\n  border: 1px solid #5bd658;\n  background-color: 3bcffb8;\n  padding: 10px 10px 30px 10px;\n  margin-bottom: 15px;\n}\n\ndiv.created-at {\n  position: absolute;\n  top: 0;\n  left: 0;\n  padding: 5px 15px 5px 15px;\n  background-color: darkgreen;\n}\n\np.text {\n  font-size: 22px;\n  font-weight: 700;\n  margin-bottom: 0;\n}"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"fullstack_vue_express\",\n  \"version\": \"1.0.0\",\n  \"description\": \"Full stack vue and express app\",\n  \"main\": \"index.js\",\n  \"scripts\": {\n    \"start\": \"node server/index.js\",\n    \"dev\": \"nodemon server/index.js\"\n  },\n  \"author\": \"Brad Traversy\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"body-parser\": \"^1.18.3\",\n    \"cors\": \"^2.8.4\",\n    \"express\": \"^4.16.3\",\n    \"mongodb\": \"^3.1.13\"\n  },\n  \"devDependencies\": {\n    \"nodemon\": \"^1.18.4\"\n  }\n}\n"
  },
  {
    "path": "server/index.js",
    "content": "const express = require('express');\nconst bodyParser = require('body-parser');\nconst cors = require('cors');\n\nconst app = express();\n\n// Middleware\napp.use(bodyParser.json());\napp.use(cors());\n\nconst posts = require('./routes/api/posts');\n\napp.use('/api/posts', posts);\n\n// Handle production\nif (process.env.NODE_ENV === 'production') {\n  // Static folder\n  app.use(express.static(__dirname + '/public/'));\n\n  // Handle SPA\n  app.get(/.*/, (req, res) => res.sendFile(__dirname + '/public/index.html'));\n}\n\nconst port = process.env.PORT || 5000;\n\napp.listen(port, () => console.log(`Server started on port ${port}`));\n"
  },
  {
    "path": "server/routes/api/posts.js",
    "content": "const express = require('express');\nconst mongodb = require('mongodb');\n\nconst router = express.Router();\n\n// Get Posts\nrouter.get('/', async (req, res) => {\n  const posts = await loadPostsCollection();\n  res.send(await posts.find({}).toArray());\n});\n\n// Add Post\nrouter.post('/', async (req, res) => {\n  const posts = await loadPostsCollection();\n  await posts.insertOne({\n    text: req.body.text,\n    createdAt: new Date()\n  });\n  res.status(201).send();\n});\n\n// Delete Post\nrouter.delete('/:id', async (req, res) => {\n  const posts = await loadPostsCollection();\n  await posts.deleteOne({ _id: new mongodb.ObjectID(req.params.id) });\n  res.status(200).send({});\n});\n\nasync function loadPostsCollection() {\n  const client = await mongodb.MongoClient.connect(\n    'mongodb://YOUR_OWN_MONGODB',\n    {\n      useNewUrlParser: true\n    }\n  );\n\n  return client.db('vue_express').collection('posts');\n}\n\nmodule.exports = router;\n"
  }
]