diff options
author | Nikita Tchayka <nikitatchayka@gmail.com> | 2023-09-16 19:02:14 +0100 |
---|---|---|
committer | Nikita Tchayka <nikitatchayka@gmail.com> | 2023-09-16 19:02:14 +0100 |
commit | b0c1d8bfba7fc4d85ae37df18a704ce239b65d28 (patch) | |
tree | 0a43cb54ccdd72addcf66dac066f5d64e705d457 /docs | |
parent | 0619286d9615c6a2b5e0420c193bd2c7ef344cc0 (diff) | |
download | neohaskell.github.io-b0c1d8bfba7fc4d85ae37df18a704ce239b65d28.tar.gz neohaskell.github.io-b0c1d8bfba7fc4d85ae37df18a704ce239b65d28.tar.bz2 neohaskell.github.io-b0c1d8bfba7fc4d85ae37df18a704ce239b65d28.zip |
Ready for prod? lol
Diffstat (limited to 'docs')
-rw-r--r-- | docs/intro.md | 56 | ||||
-rw-r--r-- | docs/tutorial-basics/_category_.json | 4 | ||||
-rw-r--r-- | docs/tutorial-basics/congratulations.md | 23 | ||||
-rw-r--r-- | docs/tutorial-basics/create-a-blog-post.md | 34 | ||||
-rw-r--r-- | docs/tutorial-basics/create-a-document.md | 57 | ||||
-rw-r--r-- | docs/tutorial-basics/create-a-page.md | 43 | ||||
-rw-r--r-- | docs/tutorial-basics/deploy-your-site.md | 31 | ||||
-rw-r--r-- | docs/tutorial-basics/markdown-features.mdx | 149 |
8 files changed, 38 insertions, 359 deletions
diff --git a/docs/intro.md b/docs/intro.md index 8a2e69d..3a84e30 100644 --- a/docs/intro.md +++ b/docs/intro.md @@ -2,46 +2,52 @@ sidebar_position: 1 --- -# Tutorial Intro +# The NeoHaskell Dogma -Let's discover **Docusaurus in less than 5 minutes**. +> A Dogma is not bad if it is aligned with the principles of the individual, and flexible enough for the moments it isn't. -## Getting Started +## The Complexity Generation -Get started by **creating a new site**. +Once upon a time, there was a developer who embarked on a project written in Haskell—a language known for its expressive power and strong type system. Consumed by the allure of purely functional programming, this developer started off with enthusiasm and hope. Yet as time passed, the Haskell codebase, once a work of intellectual beauty, turned increasingly cumbersome and enigmatic, as the team +kept adding on newer and fancier features. -Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**. +The project was eventually pulled from production, but its lessons were far from lost. Over the subsequent five years, the developer turned to TypeScript, Python, and Java—languages celebrated for their wide utility and enterprise appeal. While the code-bases in these languages weren't inherently complex in their syntax, a new challenge emerged: cognitive overload, exacerbated by the side effects and unpredictability that came with these languages. Though the lines of code were straightforward, the resulting complexity was covertly overwhelming. -### What you'll need +## The Awakening: NeoHaskell Emerges -- [Node.js](https://nodejs.org/en/download/) version 16.14 or above: - - When installing Node.js, you are recommended to check all checkboxes related to dependencies. +Confronted by these extremes, it became clear that a middle ground was sorely needed. And so, the concept of NeoHaskell was conceived, drawing wisdom from experiences in Domain-Driven Design, Event Sourcing, CQRS, and the craftsmanship intrinsic to software development. -## Generate a new site +The ambition? To rebuild Haskell from its foundations, creating a language designed to combat both code complexity and accidental complexity—those problems that don't arise from the domain but from the tools and methodologies employed. -Generate a new Docusaurus site using the **classic template**. +## The goal: Focus on what's important -The classic template will automatically be added to your project after you run the command: +### Beginner-Friendliness -```bash -npm init docusaurus@latest my-website classic -``` +The first lesson from the initial Haskell venture was its steep learning curve. NeoHaskell, therefore, aims to be approachable. It adopts a syntax and paradigms that are less intimidating for newcomers while still preserving the essential capabilities that Haskell offers. -You can type this command into Command Prompt, Powershell, Terminal, or any other integrated terminal of your code editor. +### Productivity -The command also installs all necessary dependencies you need to run Docusaurus. +In crafting NeoHaskell, an emphasis has been placed on developer productivity. It encourages the creation of rich, bounded contexts and aggregate roots, allowing the developer to focus more on solving actual domain problems rather than wrestling with technicalities. -## Start your site +### Complexity Mitigation -Run the development server: +Inspired by CQRS and Event Sourcing, NeoHaskell promotes a clean architecture where read and write operations are distinctly separated. By keeping an immutable record of state changes, it brings predictability into the system, thereby mitigating both cognitive and code complexity. -```bash -cd my-website -npm run start -``` +### Joy of Use -The `cd` command changes the directory you're working with. In order to work with your newly created Docusaurus site, you'll need to navigate the terminal there. +NeoHaskell is not merely a tool; it is a craft. It aspires to make coding not just functional but also pleasurable. The language aims to trigger a flow state, making each moment of development a joyful experience. -The `npm run start` command builds your website locally and serves it through a development server, ready for you to view at http://localhost:3000/. +## The NeoHaskell Statements -Open `docs/intro.md` (this page) and edit some lines: the site **reloads automatically** and displays your changes. +* Beautiful is better han ugly +* Simple is better than complex +* Duplicate and easy is better than concise and complex +* Mathematics are good when not seen +* The 80% of type-safety should be done with 20-or-less% of the effort +* Instead of investing effort in the other 20%, better release to prod +* If it takes more than 5 minutes to understand, it's a bug +* The functional way is better, unless the imperative one is easier + +## The NeoHaskell Promise + +As it continues to evolve, NeoHaskell aspires to be a nexus of balance: simple yet potent, utilitarian yet principled, designed to cut through complexity while offering a pleasurable user experience. It doesn't just aim to be another programming language; it hopes to be a landmark in the landscape of software development—a testament to the hard-won lessons from a history rife with complexities. diff --git a/docs/tutorial-basics/_category_.json b/docs/tutorial-basics/_category_.json index 2e6db55..d205c96 100644 --- a/docs/tutorial-basics/_category_.json +++ b/docs/tutorial-basics/_category_.json @@ -1,8 +1,8 @@ { - "label": "Tutorial - Basics", + "label": "Language Fundamentals", "position": 2, "link": { "type": "generated-index", - "description": "5 minutes to learn the most important Docusaurus concepts." + "description": "Learn NeoHaskell in Y minutes. This is the best place to start if you are new to NeoHaskell. It will guide you through the language fundamentals and get you started with NeoHaskell in a short time.\n\nSome reference examples in TypeScript are provided so you can see side-by-side and learn through similarity." } } diff --git a/docs/tutorial-basics/congratulations.md b/docs/tutorial-basics/congratulations.md deleted file mode 100644 index 04771a0..0000000 --- a/docs/tutorial-basics/congratulations.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -sidebar_position: 6 ---- - -# Congratulations! - -You have just learned the **basics of Docusaurus** and made some changes to the **initial template**. - -Docusaurus has **much more to offer**! - -Have **5 more minutes**? Take a look at **[versioning](../tutorial-extras/manage-docs-versions.md)** and **[i18n](../tutorial-extras/translate-your-site.md)**. - -Anything **unclear** or **buggy** in this tutorial? [Please report it!](https://github.com/facebook/docusaurus/discussions/4610) - -## What's next? - -- Read the [official documentation](https://docusaurus.io/) -- Modify your site configuration with [`docusaurus.config.js`](https://docusaurus.io/docs/api/docusaurus-config) -- Add navbar and footer items with [`themeConfig`](https://docusaurus.io/docs/api/themes/configuration) -- Add a custom [Design and Layout](https://docusaurus.io/docs/styling-layout) -- Add a [search bar](https://docusaurus.io/docs/search) -- Find inspirations in the [Docusaurus showcase](https://docusaurus.io/showcase) -- Get involved in the [Docusaurus Community](https://docusaurus.io/community/support) diff --git a/docs/tutorial-basics/create-a-blog-post.md b/docs/tutorial-basics/create-a-blog-post.md deleted file mode 100644 index ea472bb..0000000 --- a/docs/tutorial-basics/create-a-blog-post.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -sidebar_position: 3 ---- - -# Create a Blog Post - -Docusaurus creates a **page for each blog post**, but also a **blog index page**, a **tag system**, an **RSS** feed... - -## Create your first Post - -Create a file at `blog/2021-02-28-greetings.md`: - -```md title="blog/2021-02-28-greetings.md" ---- -slug: greetings -title: Greetings! -authors: - - name: Joel Marcey - title: Co-creator of Docusaurus 1 - url: https://github.com/JoelMarcey - image_url: https://github.com/JoelMarcey.png - - name: Sébastien Lorber - title: Docusaurus maintainer - url: https://sebastienlorber.com - image_url: https://github.com/slorber.png -tags: [greetings] ---- - -Congratulations, you have made your first post! - -Feel free to play around and edit this post as much you like. -``` - -A new blog post is now available at [http://localhost:3000/blog/greetings](http://localhost:3000/blog/greetings). diff --git a/docs/tutorial-basics/create-a-document.md b/docs/tutorial-basics/create-a-document.md deleted file mode 100644 index ffddfa8..0000000 --- a/docs/tutorial-basics/create-a-document.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -sidebar_position: 2 ---- - -# Create a Document - -Documents are **groups of pages** connected through: - -- a **sidebar** -- **previous/next navigation** -- **versioning** - -## Create your first Doc - -Create a Markdown file at `docs/hello.md`: - -```md title="docs/hello.md" -# Hello - -This is my **first Docusaurus document**! -``` - -A new document is now available at [http://localhost:3000/docs/hello](http://localhost:3000/docs/hello). - -## Configure the Sidebar - -Docusaurus automatically **creates a sidebar** from the `docs` folder. - -Add metadata to customize the sidebar label and position: - -```md title="docs/hello.md" {1-4} ---- -sidebar_label: 'Hi!' -sidebar_position: 3 ---- - -# Hello - -This is my **first Docusaurus document**! -``` - -It is also possible to create your sidebar explicitly in `sidebars.js`: - -```js title="sidebars.js" -module.exports = { - tutorialSidebar: [ - 'intro', - // highlight-next-line - 'hello', - { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], - }, - ], -}; -``` diff --git a/docs/tutorial-basics/create-a-page.md b/docs/tutorial-basics/create-a-page.md deleted file mode 100644 index 20e2ac3..0000000 --- a/docs/tutorial-basics/create-a-page.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -sidebar_position: 1 ---- - -# Create a Page - -Add **Markdown or React** files to `src/pages` to create a **standalone page**: - -- `src/pages/index.js` → `localhost:3000/` -- `src/pages/foo.md` → `localhost:3000/foo` -- `src/pages/foo/bar.js` → `localhost:3000/foo/bar` - -## Create your first React Page - -Create a file at `src/pages/my-react-page.js`: - -```jsx title="src/pages/my-react-page.js" -import React from 'react'; -import Layout from '@theme/Layout'; - -export default function MyReactPage() { - return ( - <Layout> - <h1>My React page</h1> - <p>This is a React page</p> - </Layout> - ); -} -``` - -A new page is now available at [http://localhost:3000/my-react-page](http://localhost:3000/my-react-page). - -## Create your first Markdown Page - -Create a file at `src/pages/my-markdown-page.md`: - -```mdx title="src/pages/my-markdown-page.md" -# My Markdown page - -This is a Markdown page -``` - -A new page is now available at [http://localhost:3000/my-markdown-page](http://localhost:3000/my-markdown-page). diff --git a/docs/tutorial-basics/deploy-your-site.md b/docs/tutorial-basics/deploy-your-site.md deleted file mode 100644 index 1c50ee0..0000000 --- a/docs/tutorial-basics/deploy-your-site.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -sidebar_position: 5 ---- - -# Deploy your site - -Docusaurus is a **static-site-generator** (also called **[Jamstack](https://jamstack.org/)**). - -It builds your site as simple **static HTML, JavaScript and CSS files**. - -## Build your site - -Build your site **for production**: - -```bash -npm run build -``` - -The static files are generated in the `build` folder. - -## Deploy your site - -Test your production build locally: - -```bash -npm run serve -``` - -The `build` folder is now served at [http://localhost:3000/](http://localhost:3000/). - -You can now deploy the `build` folder **almost anywhere** easily, **for free** or very small cost (read the **[Deployment Guide](https://docusaurus.io/docs/deployment)**). diff --git a/docs/tutorial-basics/markdown-features.mdx b/docs/tutorial-basics/markdown-features.mdx index 0337f34..72073ef 100644 --- a/docs/tutorial-basics/markdown-features.mdx +++ b/docs/tutorial-basics/markdown-features.mdx @@ -1,150 +1,11 @@ --- -sidebar_position: 4 +sidebar_position: 1 --- -# Markdown Features +# Work In Progress -Docusaurus supports **[Markdown](https://daringfireball.net/projects/markdown/syntax)** and a few **additional features**. +If you've reached this part of the documentation, it means that you've got at least some curiosity about the project. -## Front Matter +Thanks for that! -Markdown documents have metadata at the top called [Front Matter](https://jekyllrb.com/docs/front-matter/): - -```text title="my-doc.md" -// highlight-start ---- -id: my-doc-id -title: My document title -description: My document description -slug: /my-custom-url ---- -// highlight-end - -## Markdown heading - -Markdown text with [links](./hello.md) -``` - -## Links - -Regular Markdown links are supported, using url paths or relative file paths. - -```md -Let's see how to [Create a page](/create-a-page). -``` - -```md -Let's see how to [Create a page](./create-a-page.md). -``` - -**Result:** Let's see how to [Create a page](./create-a-page.md). - -## Images - -Regular Markdown images are supported. - -You can use absolute paths to reference images in the static directory (`static/img/docusaurus.png`): - -```md - -``` - - - -You can reference images relative to the current file as well. This is particularly useful to colocate images close to the Markdown files using them: - -```md - -``` - -## Code Blocks - -Markdown code blocks are supported with Syntax highlighting. - - ```jsx title="src/components/HelloDocusaurus.js" - function HelloDocusaurus() { - return ( - <h1>Hello, Docusaurus!</h1> - ) - } - ``` - -```jsx title="src/components/HelloDocusaurus.js" -function HelloDocusaurus() { - return <h1>Hello, Docusaurus!</h1>; -} -``` - -## Admonitions - -Docusaurus has a special syntax to create admonitions and callouts: - - :::tip My tip - - Use this awesome feature option - - ::: - - :::danger Take care - - This action is dangerous - - ::: - -:::tip My tip - -Use this awesome feature option - -::: - -:::danger Take care - -This action is dangerous - -::: - -## MDX and React Components - -[MDX](https://mdxjs.com/) can make your documentation more **interactive** and allows using any **React components inside Markdown**: - -```jsx -export const Highlight = ({children, color}) => ( - <span - style={{ - backgroundColor: color, - borderRadius: '20px', - color: '#fff', - padding: '10px', - cursor: 'pointer', - }} - onClick={() => { - alert(`You clicked the color ${color} with label ${children}`) - }}> - {children} - </span> -); - -This is <Highlight color="#25c2a0">Docusaurus green</Highlight> ! - -This is <Highlight color="#1877F2">Facebook blue</Highlight> ! -``` - -export const Highlight = ({children, color}) => ( - <span - style={{ - backgroundColor: color, - borderRadius: '20px', - color: '#fff', - padding: '10px', - cursor: 'pointer', - }} - onClick={() => { - alert(`You clicked the color ${color} with label ${children}`); - }}> - {children} - </span> -); - -This is <Highlight color="#25c2a0">Docusaurus green</Highlight> ! - -This is <Highlight color="#1877F2">Facebook blue</Highlight> ! +While we're working out the docs, why not joining the [Discord server](https://discord.com/invite/wDj3UYzec8) and chatting with us? |