Skip to content

Commit ad1431b

Browse files
committed
feat(docs): make secutils/secutils-docs repository a component
1 parent 1701d8c commit ad1431b

File tree

195 files changed

+32401
-7200
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

195 files changed

+32401
-7200
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ node_modules/
22
target/
33
dist
44
.parcel-cache
5+
.docusaurus
56

67
.idea/
78
.env

components/secutils-docs/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
The documentation website for Secutils.dev.
2+
3+
## Getting started
4+
5+
Install all the required dependencies with `npm install` and run the UI in watch mode with `npm run start`.
6+
7+
### Usage
8+
9+
The docs website should be accessible at http://localhost:7373.
10+
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
3+
};
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
title: Beta release is now public
3+
description: Secutils.dev beta release is now public
4+
slug: beta-release
5+
authors: azasypkin
6+
tags: [announcement, release]
7+
image: https://secutils.dev/docs/img/blog/goal.png
8+
hide_table_of_contents: false
9+
---
10+
Hello!
11+
12+
My name is Aleh Zasypkin, and I am a software engineer with a passion for application security. Today, I am delighted to announce that the beta release of [**Secutils.dev**](https://secutils.dev) is now publicly available!
13+
14+
<!--truncate-->
15+
16+
[**Secutils.dev**](https://secutils.dev) is an [**open-source project**](https://github.com/secutils-dev) that aims to be a go-to place for all the tools you need as an application security engineer, with an easy-to-use and friendly interface. I started this project to organize the code and shell snippets that I have collected over the years, as I often found myself spending a significant amount of time searching for the right tools and resources to support my work.
17+
18+
Although originally intended for personal use, I soon realized that other developers in the same field might find it useful as well. I strongly believe that the number of application security engineers will grow significantly in the coming years, and productivity in this area will become even more important.
19+
20+
Since the project is open-source, anyone can self-host and use it for free, no strings attached. In addition, I decided to explore the feasibility of supporting the sustainable development of such an open-source project by offering a hosted, fully-managed, and plug-and-play SaaS option which can be subscribed to for a reasonable fee. My first goal is to generate enough revenue from subscriptions to pay for hosting and support further development, allowing me to commit to Secutils.dev and open source in general.
21+
22+
The beta is free and meant to facilitate feedback from potential users to help me shape the near-term roadmap, and hence is limited to only three major tools I personally use the most during my day-to-day job: X.509 certificate templates, content security policies (CSP), and HTTP auto-responders. Check out [**video guides**](https://secutils.dev/docs/category/guides) to see what you can do with these tools.
23+
24+
The [**code is open**](https://github.com/secutils-dev), the [**roadmap is public**](/docs/project/roadmap), and I'll be documenting my progress, challenges, and findings openly too.
25+
26+
In my next posts, I'm planning to cover [**technological choices I have made**](/blog/2023-05-25-technology-stack-overview.md), [**monitoring**](/blog/2023-05-30-usage-analytics-and-monitoring.md) and [**hosting infrastructure**](/blog/2023-05-28-deployment-overview.md), [**running costs and cost optimizations**](/blog/2023-06-01-running-micro-saas-for-less-than-one-euro-a-month.md), and more. If it sounds interesting to you, feel free to follow me on [**Indie Hackers**](https://www.indiehackers.com/azasypkin/history), [**Twitter**](https://twitter.com/aleh_zasypkin), [**Mastodon**](https://infosec.exchange/@azasypkin), or [**LinkedIn**](https://www.linkedin.com/in/azasypkin).
27+
28+
Thanks for reading!
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
---
2+
title: Technology stack overview
3+
description: "Technology stack overview of the Secutils.dev: Rust, Tantivy, TypeScript, React, SQLite, Docusaurus."
4+
slug: technology-stack-overview
5+
authors: azasypkin
6+
image: https://secutils.dev/docs/img/blog/goal.png
7+
tags: [overview, technology]
8+
---
9+
10+
Hello!
11+
12+
Today, I'd like to provide an overview of the technology stack powering [**Secutils.dev**](https://secutils.dev). Sharing this information might prove helpful to other individuals working on similar projects. So, without further ado, let's dive into the stack!
13+
14+
<!--truncate-->
15+
16+
<div class="text--center">
17+
<a href="/docs/blog/beta-release"><strong>🚀 Secutils.dev beta release is now public, click here to read more</strong></a>
18+
</div>
19+
20+
---
21+
22+
**DISCLAIMER:** I want to acknowledge that some of the choices I've made for the technology stack may seem like overkill to some. However, as a solo engineer/founder, it's crucial for me to maintain internal motivation to push things forward. Personally, I find that learning something new and tackling technical challenges serves as a great source of motivation. So, while it may appear unconventional, these choices align with my personal drive and passion for building Secutils.dev.
23+
24+
---
25+
26+
Currently, Secutils.dev is composed of three distinct components: a [**backend server**](https://github.com/secutils-dev/secutils), a [**Web UI client**](https://github.com/secutils-dev/secutils-webui), and a [**documentation website**](https://github.com/secutils-dev/secutils-docs). I made the decision to separate these components as it aligns with my long-term vision for Secutils.dev. In the future, I plan to transform the backend server, or a portion of it, into a lightweight library that can be distributed independently. This approach will enable tighter integration with third-party solutions at compile-time, providing a more seamless and efficient experience. By structuring Secutils.dev in this manner, I aim to create a flexible and extensible platform that can easily adapt to evolving needs and integrate with various systems.
27+
28+
## Backend
29+
30+
As you may have already deduced, the backbone of Secutils.dev lies within [**its backend server**](https://github.com/secutils-dev/secutils). This server acts as the foundation for exposing the core functionality of Secutils.dev to client applications.
31+
32+
### Programming language
33+
34+
I have extensive expertise in two languages: JavaScript (TypeScript) and Rust. Despite the fact that I could have rapidly developed a functional MVP using TypeScript and Node.js, I intentionally chose Rust as the programming language for the backend.
35+
36+
Now, while the usual benefits of Rust, such as memory safety and fearless concurrency, are certainly noteworthy, my primary motivation stems from a different aspect. In my experience, if a Rust program successfully compiles, it tends to function correctly most of the time. This aspect is paramount when striving for rapid iteration, minimizing the occurrence of trivial bugs, and fostering confidence in deploying changes to production. Bugs can be a major hassle, especially when they affect developer tools like Secutils.dev.
37+
38+
Moreover, Rust excels in cross-platform development. Although I mainly develop on the `x86` machine, I deploy compiled Rust code to much more cost-effective ARM servers (and even my mobile phone!). This process is incredibly smooth, thanks to the excellent tooling provided by Rust's Cargo.
39+
40+
### Web framework
41+
42+
To access the functionality of Secutils.dev, users can utilize either the [**Web UI**](https://github.com/secutils-dev/secutils-webui) or tools like `curl`. These interactions are facilitated through the HTTP APIs exposed by the Secutils.dev server. While there are several exceptional open-source web frameworks available in the Rust ecosystem, I opted for [**Actix Web**](https://github.com/actix/actix-web) for Secutils.dev based on my positive experience while working on [**AZbyte | ETF**](https://azbyte.xyz).
43+
44+
Actix Web stands out for its ease of use, speed, and comprehensive set of middle-wares, including authentication and session management.
45+
46+
### Database
47+
48+
When it comes to the database, Secutils.dev currently has relatively straightforward requirements. It needs to store user registrations, user data, active user sessions, and a few other internal data types. For these purposes, a simple SQLite database is more than sufficient.
49+
50+
To interact with the SQLite database from Rust, I rely on the fantastic [**SQLx**](https://github.com/launchbadge/sqlx) crate. It allows me to verify SQL queries at compile-time without the need for a domain-specific language (DSL). One of the great advantages of SQLx is its database-agnostic nature, which means that migrating to a different database like PostgreSQL in the future is straightforward if the need arises.
51+
52+
Tools like [**Litestream**](https://github.com/benbjohnson/litestream) and [**LiteFS**](https://github.com/superfly/litefs) alleviate my concerns regarding database backups and replication.
53+
54+
### Search engine
55+
56+
Although Secutils.dev currently has basic search capabilities, I believe that search will play a vital role in enhancing its overall usability in the future. Users should not only be able to find the right tool for their specific needs at any given moment but also have the ability to explore the accumulated data, including user notes, content of requests triggering auto-responders, scraped HTML data, and more.
57+
58+
To accomplish this, instead of relying on SQLite's built-in full-text search capabilities, I made the decision to leverage a dedicated full-text search engine written in Rust called [**Tantivy**](https://github.com/quickwit-oss/tantivy). Tantivy is an impressive, lightweight, and incredibly fast search engine that seamlessly integrates with Rust applications.
59+
60+
### Tests
61+
62+
When it comes to testing in Rust, there's not much to say except that it's a breeze! Writing tests in Rust is straightforward, thanks to the built-in testing framework provided by the language. Most of the time, running `cargo test` is all you need to validate your code.
63+
64+
However, I'd like to highlight a fantastic testing library called [**Insta**](https://github.com/mitsuhiko/insta). Insta is a snapshot testing library for Rust that brings the power of snapshot testing, similar to Jest, to the Rust ecosystem. If you're familiar with Jest snapshot testing, you'll appreciate how useful snapshots can be in unit tests.
65+
66+
## Frontend
67+
68+
The frontend or [**Web UI of Secutils.dev**](https://github.com/secutils-dev/secutils-webui) is a relatively straightforward "single-page" React application.
69+
70+
### Programming language
71+
72+
As I mentioned earlier, I have extensive experience in developing applications using JavaScript and TypeScript. Therefore, it was an obvious choice for me to utilize TypeScript for the Secutils.dev Web UI.
73+
74+
Both React and Parcel, a zero-configuration build tool, offer excellent support for TypeScript. This combination allows me to leverage the benefits of static typing and enhanced tooling, resulting in more robust and maintainable code.
75+
76+
### Web UI Framework
77+
78+
With the abundance of Web UI frameworks available today, I wanted to make a practical choice that would allow me to leverage my existing knowledge and meet the specific requirements of Secutils.dev. Rather than investing time in learning a new framework, I decided to work with a framework that I was already familiar with and confident would suit my needs: [**Elastic UI**](https://eui.elastic.co/).
79+
80+
It's worth mentioning that I have a personal connection to Elastic UI as I work for Elastic and know the team behind the framework. This familiarity gives me an added level of confidence in its capabilities and reliability.
81+
82+
However, it's important to note that I don't use React or Elastic UI for the Secutils.dev home page. To ensure the home page remains as lightweight as possible, I employ alternative approaches (static HTML + [**Tailwind CSS**](https://tailwindcss.com)).
83+
84+
## Documentation
85+
86+
For the documentation of Secutils.dev, I utilize the power of [**Docusaurus**](https://github.com/facebook/docusaurus). Docusaurus is a fantastic tool that simplifies the process of creating documentation websites.
87+
88+
One of the main reasons I chose Docusaurus is its support for writing documentation in Markdown format. Additionally, Docusaurus provides customizable styles and layouts, allowing me to maintain a consistent branding across the documentation. Another advantage of using Docusaurus is its built-in support for search engine optimization (SEO), making documentation more discoverable to users seeking information about Secutils.dev.
89+
90+
By leveraging Docusaurus, I can streamline the documentation process and devote more time to creating valuable content.
91+
92+
That wraps up today's post, thanks for taking the time to read it!
93+
94+
:::info ASK
95+
If you found this post helpful or interesting, please consider showing your support by starring [**secutils-dev/secutils**](https://github.com/secutils-dev/secutils) GitHub repository. Also, feel free to follow me on [**Twitter**](https://twitter.com/aleh_zasypkin), [**Mastodon**](https://infosec.exchange/@azasypkin), [**LinkedIn**](https://www.linkedin.com/in/azasypkin/), [**Indie Hackers**](https://www.indiehackers.com/azasypkin/history), or [**Dev Community**](https://dev.to/azasypkin).
96+
97+
Thank you for being a part of the community!
98+
:::

0 commit comments

Comments
 (0)