This Site
This is my personal-public knowledge hub. I built it using the static site generator, Docusaurus. It contains the public docs, ideas, links, notes, plans, projects, resources, teachings, and tutorials primarily created or curated by me.
Statement of Purpose
The primary purpose of this website is to help myself and other developers to learn, create, publish and teach content to assist in the learning process while adding value and inspiring others to do the same.
Website Inspiration
This website was inspired by the ideas of Learn In Public made popular by @swyx and many of the awesome developers and teachers across the world who learn, create, teach, and publish content for others to learn and grow from.
Shawn Wang, AKA @swyx, has inspired me to create this site. The primary goal of this project is to learn, create, publish, and teach in public. He gave me the idea to create a persistent knowledge base that grows over time and simply Open Source my knowledge! My goal is that every step of the way I will document things that I believe will be valuable in some way.
This is a living site that will continue to grow and evolve. I will add and update content as well as add more features to the site as I learn and grow. I hope you find this site helpful and inspiring as well.
Why choose Docusaurus for this website?
This open-source docs portfolio is built using Docusaurus. Ultimately, I chose to use docusaurus because it lined up well to help me accomplish my goals of consistently learning, creating, and publish projects and content. This all lines up with my statement of purpose for this website.
I tried several different options and this was the easiest to get started with and it also lined up with my most immediate goal of learning React. That's just the first reason. Ultimately, Docusaurus is built with great features and design principles that will help you focus on learning the important things, building the fun stuff and publishing to bring value to the world... and not on designing, learning and hacking the website together.
Here are the specific features and design principles that make Docusaurous so wonderful to learn, create and publish with and most of it comes right out of the box:
Docusaurus Features
Docusaurus is built with high attention to the developer and contributor experience.
- ⚛️ Built with 💚 and React:
- Extend and customize with React
- Gain full control of your site's browsing experience by providing your own React components
- Pluggable:
- Bootstrap your site with a basic template, then use advanced features and plugins
- Open source your plugins to share with the community
- ✂️ Developer experience:
- Start writing your docs right now
- Universal configuration entry point to make it more maintainable by contributors
- Hot reloading with lightning-fast incremental build on changes
- Route-based code and data splitting
- Publish to GitHub Pages, Netlify, Vercel, and other deployment services with ease
Our shared goal—to help your users quickly find what they need and understand your products better. We share our best practices to help you build your docs site right and well.
- 🎯 SEO friendly:
- HTML files are statically generated for every possible path.
- Page-specific SEO to help your users land on your official docs directly relating their problems at hand.
- 📝 Powered by MDX:
- Write interactive components via JSX and React embedded in Markdown.
- Share your code in live editors to get your users to love your products on the spot.
- 🔍 Search: Your full site is searchable.
- 💾 Document Versioning: Helps you keep documentation in sync with project releases.
- 🌍 Internationalization (i18n): Translate your site in multiple locales.
Docusaurus 2 is born to be compassionately accessible to all your users, and lightning-fast.
- ⚡️ Lightning-fast. Docusaurus 2 follows the PRPL Pattern that makes sure your content loads blazing fast.
- 🦖 Accessible. Attention to accessibility, making your site equally accessible to all users.
Docusaurus Design principles
- Little to learn. Docusaurus should be easy to learn and use as the API is quite small. Most things will still be achievable by users, even if it takes them more code and more time to write. Not having abstractions is better than having the wrong abstractions, and we don't want users to have to hack around the wrong abstractions. Mandatory talk—Minimal API Surface Area.
- Intuitive. Users will not feel overwhelmed when looking at the project directory of a Docusaurus project or adding new features. It should look intuitive and easy to build on top of, using approaches they are familiar with.
- Layered architecture. The separations of concerns between each layer of our stack (content/theming/styling) should be clear—well-abstracted and modular.
- Sensible defaults. Common and popular performance optimizations and configurations will be done for users but they are given the option to override them.
- No vendor lock-in. Users are not required to use the default plugins or CSS, although they are highly encouraged to. Certain core infrastructures like React Loadable and React Router cannot be swapped because we do default performance optimization on them, but not higher-level ones. Choice of Markdown engines, CSS frameworks, CSS methodology, and other architectures will be entirely up to users.