'use strict' const PORT = process.env.PORT || 3000 const Koa = require('koa') const app = new Koa() const Router = require('koa-router') const router = new Router() const view = require('koa-nunjucks-next') const Posts = require('./modules/posts.js') const posts = Posts.getFolder(process.env.POST_DIR) app.use(view(`${__dirname}/views`)) const postsArray = Array.from(posts.entries()) router.get('/', async function (ctx) { await ctx.render('index', { posts: postsArray }) }) router.get('/post/:filename', async function (ctx) { ctx.assert(posts.has(ctx.params.filename), 404, 'Post not found') await ctx.render('post', { post: posts.get(ctx.params.filename) }) }) const tags = Posts.toTags(posts) router.get('/tags/:tag', async function (ctx) { ctx.assert(tags.has(ctx.params.tag), 404, 'Tag not found') await ctx.render('tag', { tag: ctx.params.tag, posts: tags.get(ctx.params.tag) }) }) app.use(router.routes()).use(router.allowedMethods()) module.exports = app if (require.main === module) { app.listen(PORT, () => { console.log(`App listening on port ${PORT}`) }) }