diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..fbfa210 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,21 @@ +root = true # false + +[*] +# overrides perettier's useTabs +indent_style = tab # space + +# overrides perettier's tabWidth +# indent_size = 4 # whole number + +# overrides perettier's tabWidth +tab_width = 1 # whole number + +end_of_line = lf # cr | crlf +charset = utf-8 # latin1 | utf-8-bom | utf-16be | utf-16le + +trim_trailing_whitespace = true # false + +insert_final_newline = true # false + +# overrides perettier's printWidth +max_line_length = 80 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..2d37d80 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "singleQuote": true, + "trailingComma": "none", + "requirePragma": false, + "insertPragma": false, + "proseWrap": "always" +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..712ee78 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,10 @@ +{ + "recommendations": [ + "golang.go", + "graphql.vscode-graphql-syntax", + "mtxr.sqltools", + "mtxr.sqltools-driver-sqlite", + "streetsidesoftware.code-spell-checker", + "editorconfig.editorconfig" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3659cd5 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "sqltools.useNodeRuntime": true, + "sqltools.connections": [ + { + "previewLimit": 50, + "driver": "SQLite", + "database": "${workspaceFolder:YetAnotherToDoList}/YetAnotherToDoList.sqlite3", + "name": "development" + } + ] +} diff --git a/CONTRIBUTIN.md b/CONTRIBUTIN.md new file mode 100644 index 0000000..7418d07 --- /dev/null +++ b/CONTRIBUTIN.md @@ -0,0 +1,127 @@ +--- +gitea: none +include_toc: true +--- + +# Contributing + +This is a personal project to learn new languages and technics and thus does not +really have a future you could contribute to. You are however welcome to fork +and modify it while following the guidelines and licenses in +[COPYING.md](./COPYING.md). + +## Environment + +Preferred editor: [VSCodium](https://vscodium.com/) with some +[extensions](./.vscode/extensions.json). + +For dependencies/tools, make sure to use the versions specified in +[INSTALL.md#requirements](./INSTALL.md#requirements). + +## Coding conventions/formatting + +There is a [.editorconfig](./.editorconfig) file to use with compatible editors +[1](https://editorconfig.org/#pre-installed), or with those who have plugins +available [2](https://editorconfig.org/#download). + +Please use [prettier](https://prettier.io/) and the supplied +[configuration](./.prettierrc) to format the following file types: + +- `.js` +- `.vue` +- `.css` +- `.md` +- `.yaml` +- `.graphqls`, `.graphql` +- `.json` + +Use the following formatters with the following types: + +- `.go` (use gofmt) + +No formatter specified for the following types (adapt to existing style): + +- `Makefile` +- `.sql` +- `.mod`, `.sum` + +Do **not** change the formatting of license texts (e.g. +[COPYING.md](./COPYING.md)). + +### General + +- We indent using `tabs` (4 spaces wide). +- We use single-quotes `'` where possible. +- We use `LF` line endings (enforced by [.gitattributes](./.gitattributes)). +- We use `UTF-8` encoding where possible. +- We end files with an empty line. +- We use the string `TODO` to mark bits of code that need improvement. +- We use the string `DEBUG` to mark bits of code that are only for debugging + (remove before next commit). +- We add (if possible) the following header to files that contain a reasonable + amount of self-written code or are essential to the project: + + ```text + /* + YetAnotherToDoList + Copyright © YYYY name your@email + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, version 3. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + */ + ``` + +### File specific rules + +#### Markdown (.md) + +- We add a single `h1` element per document (as a title of the document). +- We use asterisks `*` for **bold** and _italic_, not underscores `_` . +- We don't use citation blocks `>` for emphasis. +- We end sentences with a full stop `.` . +- We leave one space around backticks `` ` `` when used as inline code. +- We add new lines around codeblocks ` ``` ` . +- We indent using spaces (2 spaces wide). +- We add a table of content (toc) in gitea's style where necessary: + + ``` + --- + gitea: none + include_toc: true + --- + ``` + +#### YAML + +We indent using spaces (1 space wide). + +#### Bash (.sh) + +We use `env` in the shebang: `#!/usr/bin/env bash`. + +### File endings + +#### .yaml and .yml + +We use the `.yaml` file ending. + +#### .graphql and .graphqls + +- We use `.graphql` for writing client queries. + +- We use `.graphqls` for defining our graph scheme. + +## Commit messages + +- We write in all lowercase except for special names, e.g. `update Makefile` +- We write in imperative mood, e.g. `add contribution guidelines`, not + `adding ... ` or `adds ... `. diff --git a/README.md b/README.md index 6222e1b..634d0fd 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,10 @@ Instructions on how to install can be found in [INSTALL.md](./INSTALL.md). Once installed, you might want to run the queries in [example.graphql](./example.graphql). +## Contributing + +For contributing see [CONTRIBUTING.md](./CONTRIBUTIN.md). + ## License [GNU GPLv3 only](./COPYING.md)