Lesstruct
I created an entire CMS (Content Management System) from scratch.
PHP ruled the CMS world when I was a kid or in college. WordPress is the most popular, and still is. I love WordPress and would recommend it to beginners because it is easy to use and develop. I master WordPress development. I have already created some WordPress themes and plugins. But there are a few shortcomings in WordPress.
- WordPress is built on PHP. PHP is slow.
- A complex business is not suitable for WordPress. We need to create a system from scratch. We can do this by using CodeIgniter or Laravel, but they are still on PHP.
- It's also not good to build a system from scratch in Go. We need a front-end or UI, and building it from scratch is always a hassle.
- Most CMS, including WordPress, are not serverless. There is a use case where serverless is better than a server.
- I want performance and SEO to come by default.
I named it Lesstruct. "Less" is inspired by headless and serverless. The "struct" is a syntax in Go. Let's compare it with WordPress and Laravel.
WordPress | Laravel | Lesstruct | |
---|---|---|---|
Programming Language | PHP | PHP | Go |
Front-End | SSR by default. It required plugins to be SPA or CSR. | SSR by default. It required Inertia to be SPA or CSR. | Headless by default. Support SSR and CSR because of Angular. |
Serverless | Challenging | it required Vapor. | Seamless integration with AWS Lambda. |
SEO Friendly | It required plugins. | It required development. | Comes by default. Such as automatically generating a beautiful-immutable slug, SEO-friendly filename for images, some meta, etc. |
Performance | It required plugins for caching, compressing, etc. | It required development. | Comes by default. Raw SQL, one API call per query request, all uploaded images are automatically compressed to WebP, minified CSS/JS, etc. |
Security | It required plugins and development. | It required development. | Comes by default. It respected GDPR. Your personal information is encrypted. Your data is yours. Delete account = delete data. It passed the OWASP Top 10. Seamless integration with AWS Cognito for authorization. |
Open-Source | Yes | Yes | Coming soon |
I love WordPress and Laravel because they are open-source. But I thought building this CMS was a great idea. Here are the glossaries that I used in case you didn't understand some terms.
Term | Full Name | Description |
---|---|---|
SSR | Server-Side Rendering | The server generates the full webpage HTML and sends it to the browser. Good for initial load speed and SEO. |
CSR | Client-Side Rendering | The browser receives a minimal HTML page and then uses JavaScript to build the rest of the content. Often used with SPAs. |
SPA | Single-Page Application | A web application that loads a single HTML page and dynamically updates content as the user interacts, without full page reloads. |
SEO | Search Engine Optimization | The process of improving your website's visibility in search engine results (like Google) to attract more organic traffic. |
SQL | Structured Query Language | A programming language used to manage and query data in relational databases (e.g., MySQL, PostgreSQL). |
API | Application Programming Interface | A set of rules and protocols that allows different software applications to communicate and exchange data with each other. |
GDPR | General Data Protection Regulation | A European Union law governing data privacy and protection for all individuals within the EU and EEA. |
OWASP | Open Worldwide Application Security Project | A non-profit foundation that works to improve software security, providing guidelines and tools for developers and organizations. |
AWS | Amazon Web Services | A comprehensive cloud computing platform from Amazon, offering a wide range of services like servers, storage, and databases. |
You can enjoy the demo without back-end integration here, https://lesstruct-demo.aristorinjuang.com/login.
Related Articles
- Online Multiplayer Game with Go
- Design Patterns with Go and TypeScript
- Next.js vs Hugo
- Belajar Dasar GoLang
- Concurrency in Go (Part 3)