diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 0000000..dc60468 --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,23 @@ +name: Close inactive issues +on: + workflow_dispatch: + schedule: + - cron: "0 0 * * *" + +jobs: + close-issues: + runs-on: ubuntu-latest + permissions: + issues: write + pull-requests: write + steps: + - uses: actions/stale@v5 + with: + days-before-issue-stale: 10 + days-before-issue-close: 10 + stale-issue-label: "stale" + stale-issue-message: "This issue is stale because it has been open for 10 days with no activity." + close-issue-message: "This issue was closed because it has been inactive for 10 days since being marked as stale." + days-before-pr-stale: -1 + days-before-pr-close: -1 + repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d4c0aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +# build output +dist/ + +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..56f043d --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,4 @@ +{ + "recommendations": ["astro-build.astro-vscode", "unifiedjs.vscode-mdx"], + "unwantedRecommendations": [] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d642209 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "command": "./node_modules/.bin/astro dev", + "name": "Development server", + "request": "launch", + "type": "node-terminal" + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..7e980b0 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "[astro]": { + "editor.defaultFormatter": "astro-build.astro-vscode" + } +} \ No newline at end of file diff --git a/_astrosphere.jpg b/_astrosphere.jpg new file mode 100644 index 0000000..ba48e97 Binary files /dev/null and b/_astrosphere.jpg differ diff --git a/_deploy_netlify.svg b/_deploy_netlify.svg new file mode 100644 index 0000000..28837b6 --- /dev/null +++ b/_deploy_netlify.svg @@ -0,0 +1,17 @@ + diff --git a/_deploy_vercel.svg b/_deploy_vercel.svg new file mode 100644 index 0000000..e2d3a0d --- /dev/null +++ b/_deploy_vercel.svg @@ -0,0 +1,5 @@ + diff --git a/_lighthouse.png b/_lighthouse.png new file mode 100644 index 0000000..0695a06 Binary files /dev/null and b/_lighthouse.png differ diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..9e4ffcf --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,11 @@ +import { defineConfig } from "astro/config" +import mdx from "@astrojs/mdx" +import sitemap from "@astrojs/sitemap" +import tailwind from "@astrojs/tailwind" +import solidJs from "@astrojs/solid-js" + +// https://astro.build/config +export default defineConfig({ + site: "https://astro-sphere-demo.vercel.app", + integrations: [mdx(), sitemap(), solidJs(), tailwind({ applyBaseStyles: false })], +}) \ No newline at end of file diff --git a/content/blog/01-astro-sphere-file-structure/index.md b/content/blog/01-astro-sphere-file-structure/index.md new file mode 100644 index 0000000..e90b278 --- /dev/null +++ b/content/blog/01-astro-sphere-file-structure/index.md @@ -0,0 +1,51 @@ +--- +title: "Astro Sphere: File Structure" +summary: "You'll find these directories and files in the project. What do they do?" +date: "Mar 17 2024" +draft: false +tags: +- Tutorial +- Astro +- Astro Sphere +--- + +A one line summary of what each file and directory is for: +```js +/ +├── public/ // Files publicly available to the browser +│ ├── fonts/ // The default fonts for Astro Sphere +│ │ └── atkinson-bold.woff // default font weight 700 +│ │ └── atkinson-regular.woff // default font weight 400 +│ ├── js/ // Javascript that will be imported into
+│ │ └── animate.js // function for animating page elements +│ │ └── bg.js // function for generating the background +│ │ └── scroll.js // scroll handler for the header styles +│ │ └── theme.js // controls the light and dark theme +│ └── brand.svg //the icon that displays in header and footer +│ └── favicon.svg //the icon that displays in the browser +│ └── ui.svg // an svg sprite for all ui icons on the website +│ └── social.svg // an svg sprite for all social media icons +│ └── open-graph.jpg // the default image for open-graph +│ └── robots.txt // for web crawlers and bots to index the website +├── src/ // Everything that will be built for the website +│ ├── components/ // All astro and SolidJs components +│ ├── content/ // Contains all static markdown to be compiled +│ │ | blog/ // Contains all blog post markdown +│ │ | projects/ // Contains all projects markdown +│ │ | work/ // Contains all work page markdown +│ │ | legal/ // Contains all legal docs markdown +│ │ └── config.ts // Contains the collection config for Astro +│ ├── layouts/ // Reused layouts across the website +│ └── pages/ // All of the pages on the website +│ └── styles/ // CSS and global tailwind styles +│ └── lib/ // Global helper functions +│ └── consts.ts // Page metadata, general configuration +│ └── types.ts // Types for consts.ts +└── .gitignore // Files and directories to be ignored by Git +└── .eslintignore // Files and directories to be ignored by ESLint +└── eslintrc.cjs // ESLint configuration +└── astro.config.mjs // Astro configuration +└── tailwind.config.mjs // Tailwind configuration +└── tsconfig.json // Typescript configuration +└── package.json // All the installed packages +``` \ No newline at end of file diff --git a/content/blog/02-astro-sphere-getting-started/index.md b/content/blog/02-astro-sphere-getting-started/index.md new file mode 100644 index 0000000..f1168cf --- /dev/null +++ b/content/blog/02-astro-sphere-getting-started/index.md @@ -0,0 +1,90 @@ +--- +title: "Astro Sphere: Getting Started" +summary: "You've downloaded and installed the project. Let's hit the ground running." +date: "Mar 16 2024" +draft: false +tags: +- Tutorial +- Astro +- Astro Sphere +--- + +Astro Sphere is designed to be configurable. This article will cover the basics on +configuring the site and make it personal. + +### First let's change the url + +```js +//astro.config.mjs + +export default defineConfig({ + site: "https://astro-sphere.vercel.app", // your domain here + integrations: [mdx(), sitemap(), solidJs(), tailwind({ applyBaseStyles: false })], +}) +``` + +### Next, Let's configure the Site + +```js +// src/consts.ts + +export const SITE: Site = { + TITLE: "Astro Sphere", + DESCRIPTION: "Welcome to Astro Sphere, a portfolio and blog for designers and developers.", + AUTHOR: "Mark Horn", +} +``` + +| Field | Type | Description | +| :---------- | :----- | :--------------------------------------------------------------------- | +| TITLE | String | The title of the website. Displayed in header and footer. Used in SEO. | +| DESCRIPTION | String | The description of the index page of the website. Used in SEO. | +| AUTHOR | String | Your name. | + +### Change the branding + +The browser icon is located in `/public/favicon.svg` + +The header and footer branding icon is located in `/public/brand.svg` as a sprite with id="brand" + +### The rest of the consts file + +Each page has a metadata entry that is useful for SEO. + +```js +export const WORK: Page = { + TITLE: "Work", + DESCRIPTION: "Places I have worked.", +} +``` + +The links that are displayed in the header and drawer + +```js +export const LINKS: Links = [ + { HREF: "/", TEXT: "Home" }, + { HREF: "/work", TEXT: "Work" }, + { HREF: "/blog", TEXT: "Blog" }, + { HREF: "/projects", TEXT: "Projects" }, +] +``` + +The social media links + +```js +export const SOCIALS: Socials = [ + { + NAME: "Github", + ICON: "github", + TEXT: "markhorn-dev", + HREF: "https://github.com/markhorn-dev/astro-sphere" + }, +] +``` + +| Field | Type | Required | Description | +| :---- | :--- | :------- | :---------- | +| NAME | string | yes | Accessible name | +| ICON | string | yes | Refers to the symbol id in `public/social.svg` | +| TEXT | string | yes | Shorthand profile name | +| HREF | string | yes | The link to the social media profile | \ No newline at end of file diff --git a/content/blog/03-astro-sphere-add-new-post-or-projects/index.md b/content/blog/03-astro-sphere-add-new-post-or-projects/index.md new file mode 100644 index 0000000..439923b --- /dev/null +++ b/content/blog/03-astro-sphere-add-new-post-or-projects/index.md @@ -0,0 +1,87 @@ +--- +title: "Astro Sphere: Adding a new post or project." +summary: "Adding a new article (blog post or project) is pretty easy." +date: "Mar 14 2024" +draft: false +tags: +- Tutorial +- Astro +- Astro Sphere +--- +### Basics + +Create a folder in the respective collection you wish to create content. The name of the folder will be the slug in which your content will be found. + +```text +creating the following + +/content/blog/my-new-post/index.md + +will be published to + +https://yourdomain.com/blog/my-new-post + +``` + +### Frontmatter + +Front matter is in yaml if you are familiar with the format. All posts and projects require frontmatter at the top of the document to be imported. All frontmatter must be inside triple dashes, similar to Astro format. See example below. + +### Blog Collection + +| Field | Type | Req? | Description | +| :------ | :------ | :--- | :------------------------------------------------------------ | +| title | string | yes | Title of the post. Used in SEO. | +| summary | string | yes | Short description of the post. Used in SEO. | +| date | string | yes | Any string date that javascript can convert. Used in sorting | +| tags | array | yes | Post topic. Array of strings. Used in filtering. | +| draft | boolean | no | Hides the post from collections. Unpublished entry. | + +Example blog post frontmatter + +```yaml +--- +title: "Astro Sphere: Adding a new post or project." +summary: "Adding a new article (blog post or project) is pretty easy." +date: "Mar 18 2024" +draft: false +tags: +- Tutorial +- Astro +- Astro Sphere +--- +``` + +### Projects Collection (extends Blog Collection) + +| Field | Type | Req? | Description | +| :------ | :------ | :--- | :------------------------------------------------------------ | +| title | string | yes | Title of the post. Used in SEO. | +| summary | string | yes | Short description of the post. Used in SEO. | +| date | string | yes | Any string date that javascript can convert. Used in sorting | +| tags | array | yes | Post topic. Array of strings. Used in filtering. | +| draft | boolean | no | Hides the post from collections. Unpublished entry. | +| demoUrl | string | no | A link to the deployed project, if applicable. | +| repoUrl | string | no | A link to the repository, if applicable. | + +Example project frontmatter + +```yaml +--- +title: "Astro Sphere" +summary: "Astro Sphere, a portfolio and blog for designers and developers." +date: "Mar 18 2024" +draft: false +tags: +- Astro +- Typescript +- Javascript +- Tailwind +- SolidJS +demoUrl: https://astro-sphere.vercel.app +repoUrl: https://github.com/markhorn-dev/astro-sphere +--- +``` + +### Write your content +You've made it this far, all that is left to do is write your content beneath the frontmatter. Writing markdown will be covered in the next article. \ No newline at end of file diff --git a/content/blog/04-astro-sphere-writing-markdown/index.md b/content/blog/04-astro-sphere-writing-markdown/index.md new file mode 100644 index 0000000..863f7cd --- /dev/null +++ b/content/blog/04-astro-sphere-writing-markdown/index.md @@ -0,0 +1,236 @@ +--- +title: "Astro Sphere: Writing Markdown" +summary: "Basic Markdown syntax that can be used when writing Markdown content in Astro Sphere." +date: "Mar 13 2024" +draft: false +tags: +- Tutorial +- Astro +- Astro Sphere +- Markdown +--- + +### Headings + +```text +# H1 + +## H2 + +### H3 + +#### H4 + +##### H5 + +###### H6 + +``` + +# H1 + +## H2 + +### H3 + +#### H4 + +##### H5 + +###### H6 + +### Paragraph + +Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat. + +Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat. + +### Images + +Relative image in the /public folder + +```markdown + +``` + + + +Relative Image in the same folder as the markdown + +```markdown + +``` + + + +## Blockquotes + +The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations. + +### Blockquote without attribution + +#### Syntax + +```markdown +> Tiam, ad mint andaepu dandae nostion secatur sequo quae. +> **Note** that you can use _Markdown syntax_ within a blockquote. +``` + +#### Output + +> Tiam, ad mint andaepu dandae nostion secatur sequo quae. +> **Note** that you can use _Markdown syntax_ within a blockquote. + +### Blockquote with attribution + +#### Syntax + +```markdown +> Don't communicate by sharing memory, share memory by communicating.Test
+ + +``` +```` + +Output + +```html + + + + +Test
+ + +``` + +## List Types + +### Ordered List + +#### Syntax + +```markdown +1. First item +2. Second item +3. Third item +``` + +#### Output + +1. First item +2. Second item +3. Third item + +### Unordered List + +#### Syntax + +```markdown +- List item +- Another item +- And another item +``` + +#### Output + +- List item +- Another item +- And another item + +### Nested list + +#### Syntax + +```markdown +- Fruit + - Apple + - Orange + - Banana +- Dairy + - Milk + - Cheese +``` + +#### Output + +- Fruit + - Apple + - Orange + - Banana +- Dairy + - Milk + - Cheese + +## Other Elements — abbr, sub, sup, kbd, mark + +#### Syntax + +```markdown +GIF is a bitmap image format. + +H2O + +Xn + Yn = Zn + +Press CTRL+ALT+Delete to end the session. + +Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. +``` + +#### Output + +GIF is a bitmap image format. + +H2O + +Xn + Yn = Zn + +Press CTRL+ALT+Delete to end the session. + +Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. diff --git a/content/blog/04-astro-sphere-writing-markdown/spongebob.png b/content/blog/04-astro-sphere-writing-markdown/spongebob.png new file mode 100644 index 0000000..8bd71fc Binary files /dev/null and b/content/blog/04-astro-sphere-writing-markdown/spongebob.png differ diff --git a/content/blog/05-astro-sphere-writing-mdx/MyComponent.astro b/content/blog/05-astro-sphere-writing-mdx/MyComponent.astro new file mode 100644 index 0000000..9e1faa7 --- /dev/null +++ b/content/blog/05-astro-sphere-writing-mdx/MyComponent.astro @@ -0,0 +1,16 @@ +--- +type Props = { + name: string +} +const { name } = Astro.props +--- + +Test
+ + +``` +```` + +Output + +```html + + + + +Test
+ + +``` + +## List Types + +### Ordered List + +#### Syntax + +```markdown +1. First item +2. Second item +3. Third item +``` + +#### Output + +1. First item +2. Second item +3. Third item + +### Unordered List + +#### Syntax + +```markdown +- List item +- Another item +- And another item +``` + +#### Output + +- List item +- Another item +- And another item + +### Nested list + +#### Syntax + +```markdown +- Fruit + - Apple + - Orange + - Banana +- Dairy + - Milk + - Cheese +``` + +#### Output + +- Fruit + - Apple + - Orange + - Banana +- Dairy + - Milk + - Cheese + +## Other Elements — abbr, sub, sup, kbd, mark + +#### Syntax + +```markdown +GIF is a bitmap image format. + +H2O + +Xn + Yn = Zn + +Press CTRL+ALT+Delete to end the session. + +Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. +``` + +#### Output + +GIF is a bitmap image format. + +H2O + +Xn + Yn = Zn + +Press CTRL+ALT+Delete to end the session. + +Most salamanders are nocturnal, and hunt for insects, worms, and other small creatures. diff --git a/src/content/blog/04-astro-sphere-writing-markdown/spongebob.png b/src/content/blog/04-astro-sphere-writing-markdown/spongebob.png new file mode 100644 index 0000000..8bd71fc Binary files /dev/null and b/src/content/blog/04-astro-sphere-writing-markdown/spongebob.png differ diff --git a/src/content/blog/05-astro-sphere-writing-mdx/MyComponent.astro b/src/content/blog/05-astro-sphere-writing-mdx/MyComponent.astro new file mode 100644 index 0000000..9e1faa7 --- /dev/null +++ b/src/content/blog/05-astro-sphere-writing-mdx/MyComponent.astro @@ -0,0 +1,16 @@ +--- +type Props = { + name: string +} +const { name } = Astro.props +--- + ++ Время пришло! +
++ Для новых горизонтов возможностей! +
++ Мы расскажем вам про новое поколение ПЛАТ УПРАВЛЕНИЯ. +
+ +Мы команда инженеров, програмистов, архитекторов, конструкторов, тестировщиков, которвые собрались для общего дела.
+Проектирование и изготовление печатных плат – это важный этап в создании электронных устройств. Наша компания специализируется на разработке и программировании плат управления, которые могут быть частью различных устройств, от беспилотных летательных аппаратов (БПЛА) до умных домов и систем оповещения.
+Вот несколько ключевых аспектов, которые следует учесть при проектировании и изготовлении печатных плат:
++ Определение правил проектирования платы: +
Прежде чем начать размещение компонентов, важно определить правила проектирования печатной платы. Это включает в себя выбор метода изготовления, определение стека платы и установку ограничений для обеспечения производительности и надежности.
+ Размещение компонентов: +Хорошее размещение компонентов обеспечивает решаемость и простоту трассировки. Группировка компонентов по типу помогает предотвратить необходимость долгой трассировки по всей плате.
+ Расположение питания и заземления: +Важно правильно разместить питание и заземление в стеке платы. Это включает в себя учет смешанных сигналов и обеспечение надежной работы.
+ Соблюдение механических ограничений: +Расположение разъемов и соблюдение размеров корпуса также важно для успешного проектирования.
++ Наши последние посты +
+ + + Все посты + + ++ Сайт сделан на следующих технологиях +
++ Последние проекты +
+ + + Все проекты + + ++ Для связи +
++ у нас есть email и телеграм бот обратной связи, так же есть каналы в telegram, youtube, github. +
++ Last updated: {formatDate(date)} +
+