README auf Deutsch hier verfügbar! :)
Gutenberg is an Express.js project aiming to provide a simple yet comprehensive solution for managing blogs and small news sites, aimed for both developers and producers (authors / orgs) alike.
Web applications and web sites whose main method of content delivery is through a large number of pages require a scalable method of delivery with a responsive and intuitive layout for both producers and consumers. This project aims to serve as a template for building apps while keeping code low, aside from customization choices such as styling or frontend features.
The server-side code is written in Javascript using Node, and requires the following npm packages:
Bootstrap
for responsive and accessible stylingExpress
for middlewareejs
for templatingmongodb
for interacting with a mongodb databasemorgan
for loggingredis
for cacheing commonly-used elements across pagesJest
andSelenium
(see Tests)
MongoDB is used to serve article / blog text. Media retrieval is achieved through local storage and a custom store and search implementation, which is accessible via the admin view.
This app is developed with Node.js v21.5.0
. All necessary packages are included in package.json.
- Clone this repository
git clone
- Set up the environment by installing the required dependencies included in the
package.json
file using
npm install
I've also added Artillery as a dependency for load testing, with a spike test configured in artillery-config.yaml. In the application's current iteration, it does not appear to handle load testing well.
Diagram coming soon.
- Article generation via templates and text stored in the database
- Simple HTTP request logs
- Final Homepage layout
- Final article layout
- Live news feed logic and layout
- Basic admin interface for post CRUD operations.
- Media retrieval without database querying
- Redis caching
- In-built post analytics
Potentially:
- LaTeX integration (will likely need to update the data query logic to handle this)
- Colour and font customization
Coming soon.
As this project is aimed both for other developers to build on and for writers or small organizations to use as a template for news sites and blogs, this documentation entails a description of the source code, how to customize the content and layout, and creating new content as an admin.