feat: add contents of about page
This commit is contained in:
committed by
Mathias Schopmans
parent
c29e518f90
commit
563d8debc0
1
.gitignore
vendored
1
.gitignore
vendored
@@ -17,6 +17,7 @@
|
|||||||
/src/components/Icons/
|
/src/components/Icons/
|
||||||
|
|
||||||
/data/*
|
/data/*
|
||||||
|
!/data/about.md
|
||||||
!/data/config.json
|
!/data/config.json
|
||||||
!/data/messages.json
|
!/data/messages.json
|
||||||
|
|
||||||
|
|||||||
79
data/about.md
Normal file
79
data/about.md
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
# How to use the AOE Technology Radar
|
||||||
|
|
||||||
|
### Introduction
|
||||||
|
|
||||||
|
Technology is advancing rapidly, with new technologies and innovations constantly emerging.
|
||||||
|
|
||||||
|
It is essential for a development and technology company like AOE to continually improve and keep
|
||||||
|
track of the latest valuable innovations. It is important to actively seek out innovations and new
|
||||||
|
technologies and periodically question established technologies and methods.
|
||||||
|
|
||||||
|
But, it is also important to wisely choose which technologies to use in our daily work and in the
|
||||||
|
different projects we are carrying out. As we all know: There is no silver bullet.
|
||||||
|
|
||||||
|
### What is the AOE Technology Radar?
|
||||||
|
|
||||||
|
The Tech Radar provides an overview of different technologies, including languages, frameworks,
|
||||||
|
tools, and patterns, as well as platforms, that we consider 'new or noteworthy.' The radar does not
|
||||||
|
cover all established technologies; instead, it focuses on items that have recently gained
|
||||||
|
significance or undergone changes. Items previously featured in the radar are not listed on the
|
||||||
|
homepage but remain available in the complete overview and search.
|
||||||
|
|
||||||
|
### How it is created
|
||||||
|
|
||||||
|
The items in the technology radar are suggested by different teams, many of which are related to the
|
||||||
|
work and challenges faced by the teams in various projects. In fact, we do not include anything on
|
||||||
|
the radar that we haven't personally tested at least once.
|
||||||
|
|
||||||
|
Numerous valuable discussions have taken place in various expert groups regarding the classification
|
||||||
|
and details of each technology and innovation. The culmination of these discussions is reflected in
|
||||||
|
the latest technology radar.
|
||||||
|
|
||||||
|
### How should it be used
|
||||||
|
|
||||||
|
The radar serves as an overview of technologies that we believe everyone in the teams should be
|
||||||
|
aware of at present.
|
||||||
|
|
||||||
|
Its goal is to guide and inspire daily work within the teams. Additionally, it aims to provide
|
||||||
|
valuable information and a high-level perspective to enable decisions to be made with a deeper
|
||||||
|
understanding of the subject matter, resulting in more informed and coordinated choices.
|
||||||
|
|
||||||
|
We also hope that developers outside of AOE will find the information in our technology overview
|
||||||
|
inspiring.
|
||||||
|
|
||||||
|
We categorize the items into four quadrants, and sometimes, when it's not entirely clear where an
|
||||||
|
item belongs, we choose the best fit.
|
||||||
|
|
||||||
|
#### The quadrants are:
|
||||||
|
|
||||||
|
- **Languages & Frameworks:** In this category, we include development languages like Scala or
|
||||||
|
Golang, as well as low-level development frameworks such as Play or Symfony. These are valuable
|
||||||
|
for implementing various types of custom software.
|
||||||
|
- **Tools:** This section is dedicated to a wide range of software tools, from small utilities to
|
||||||
|
more extensive software projects.
|
||||||
|
- **Methods & Patterns:** Patterns hold enduring significance, with many of them standing the test
|
||||||
|
of time compared to some tools or frameworks. This category is where we provide information on
|
||||||
|
methods and patterns related to development, continuous integration, testing, organization,
|
||||||
|
architecture, and more.
|
||||||
|
- **Platforms & Operations:** In this quadrant, we group technologies related to the operation of
|
||||||
|
software, infrastructure, and platform-related tools and services.
|
||||||
|
|
||||||
|
#### Each of the items is classified in one of these rings:
|
||||||
|
|
||||||
|
- **Adopt:** We wholeheartedly recommend this technology. It has been extensively used in many teams
|
||||||
|
for an extended period, proving its stability and utility.
|
||||||
|
- **Trial:** We have successfully implemented this technology and suggest taking a closer look at it
|
||||||
|
in this category. The aim here is to scrutinize these items more closely with the intention of
|
||||||
|
elevating them to the 'Adopt' level.
|
||||||
|
- **Assess:** We have experimented with this technology and find it promising. We recommend
|
||||||
|
exploring these items when you encounter a specific need for the technology in your project.
|
||||||
|
- **Hold:** This category is somewhat unique. Unlike the others, it advises discontinuing or
|
||||||
|
refraining from using certain technologies. This does not necessarily imply that they are
|
||||||
|
inherently bad; it often may be acceptable to use them in existing projects. However, we move
|
||||||
|
items here when we believe they should no longer be employed, as we have identified better options
|
||||||
|
or alternatives.
|
||||||
|
|
||||||
|
### Contributing to the AOE Technology Radar
|
||||||
|
|
||||||
|
Contributions and source code of the AOE Tech Radar are on
|
||||||
|
GitHub: [AOE Tech Radar on GitHub](https://github.com/AOEpeople/aoe_technology_radar)
|
||||||
@@ -25,7 +25,7 @@ function dataPath(...paths: string[]): string {
|
|||||||
|
|
||||||
function convertToHtml(markdown: string): string {
|
function convertToHtml(markdown: string): string {
|
||||||
if (config.basePath) {
|
if (config.basePath) {
|
||||||
markdown = markdown.replace(/\]\(\//g, `](${config.basePath}`);
|
markdown = markdown.replace(/]\(\//g, `](${config.basePath}/`);
|
||||||
}
|
}
|
||||||
|
|
||||||
let html = marked.parse(markdown.trim()) as string;
|
let html = marked.parse(markdown.trim()) as string;
|
||||||
@@ -36,6 +36,15 @@ function convertToHtml(markdown: string): string {
|
|||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function readMarkdownFile(filePath: string) {
|
||||||
|
const id = path.basename(filePath, ".md");
|
||||||
|
const fileContent = fs.readFileSync(filePath, "utf8");
|
||||||
|
const { data, content } = matter(fileContent);
|
||||||
|
const body = convertToHtml(content);
|
||||||
|
|
||||||
|
return { id, data, body };
|
||||||
|
}
|
||||||
|
|
||||||
// Function to recursively read Markdown files and parse them
|
// Function to recursively read Markdown files and parse them
|
||||||
async function parseDirectory(dirPath: string): Promise<Item[]> {
|
async function parseDirectory(dirPath: string): Promise<Item[]> {
|
||||||
const items: Record<string, Item> = {};
|
const items: Record<string, Item> = {};
|
||||||
@@ -48,12 +57,8 @@ async function parseDirectory(dirPath: string): Promise<Item[]> {
|
|||||||
if (entry.isDirectory()) {
|
if (entry.isDirectory()) {
|
||||||
await readDir(fullPath);
|
await readDir(fullPath);
|
||||||
} else if (entry.isFile() && entry.name.endsWith(".md")) {
|
} else if (entry.isFile() && entry.name.endsWith(".md")) {
|
||||||
const fileContent = fs.readFileSync(fullPath, "utf8");
|
|
||||||
|
|
||||||
const releaseDate = path.basename(path.dirname(fullPath));
|
const releaseDate = path.basename(path.dirname(fullPath));
|
||||||
const id = path.basename(fullPath, ".md");
|
const { id, data, body } = readMarkdownFile(fullPath);
|
||||||
const { data, content } = matter(fileContent);
|
|
||||||
const body = convertToHtml(content);
|
|
||||||
|
|
||||||
if (!items[id]) {
|
if (!items[id]) {
|
||||||
items[id] = {
|
items[id] = {
|
||||||
@@ -153,9 +158,13 @@ function postProcessItems(items: Item[]): {
|
|||||||
return { releases, tags, items: processedItems };
|
return { releases, tags, items: processedItems };
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse the data and write it to JSON file
|
// Parse the data and write radar data to JSON file
|
||||||
parseDirectory(dataPath("radar")).then((items) => {
|
parseDirectory(dataPath("radar")).then((items) => {
|
||||||
const data = postProcessItems(items);
|
const data = postProcessItems(items);
|
||||||
const json = JSON.stringify(data, null, 2);
|
const json = JSON.stringify(data, null, 2);
|
||||||
fs.writeFileSync(dataPath("data.json"), json);
|
fs.writeFileSync(dataPath("data.json"), json);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// write about data to JSON file
|
||||||
|
const about = readMarkdownFile(dataPath("about.md"));
|
||||||
|
fs.writeFileSync(dataPath("about.json"), JSON.stringify(about, null, 2));
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
|
|
||||||
|
import about from "../../data/about.json";
|
||||||
|
|
||||||
import { formatTitle } from "@/lib/format";
|
import { formatTitle } from "@/lib/format";
|
||||||
import { CustomPage } from "@/pages/_app";
|
import { CustomPage } from "@/pages/_app";
|
||||||
|
|
||||||
@@ -10,7 +12,7 @@ const HelpAndAbout: CustomPage = () => {
|
|||||||
<title>{formatTitle("Help and About")}</title>
|
<title>{formatTitle("Help and About")}</title>
|
||||||
</Head>
|
</Head>
|
||||||
|
|
||||||
<h1>Help and about</h1>
|
<div dangerouslySetInnerHTML={{ __html: about.body }} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -84,6 +84,10 @@ h3 {
|
|||||||
font-size: 20px;
|
font-size: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
ul,
|
ul,
|
||||||
ol {
|
ol {
|
||||||
padding-left: 16px;
|
padding-left: 16px;
|
||||||
|
|||||||
Reference in New Issue
Block a user