add: Notes app added to my projects

This commit is contained in:
2025-12-06 16:30:30 +03:00
parent 63ff73ab18
commit b629f067f8
11 changed files with 66 additions and 33 deletions

View File

@@ -3,7 +3,7 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { useTranslations, useLocale } from "next-intl"; import { useTranslations, useLocale } from "next-intl";
import { Header } from "@/components/header"; import { Header } from "@/components/header";
import { SiVk, SiTelegram, SiPostgresql, SiReact, SiGo, SiHtml5, SiMaildotru, SiGmail, SiTiktok } from "react-icons/si"; import { SiVk, SiTelegram, SiPostgresql, SiReact, SiGo, SiHtml5, SiMaildotru, SiGmail, SiTiktok, SiGithub } from "react-icons/si";
import Link from "next/link"; import Link from "next/link";
import Image from "next/image"; import Image from "next/image";
import { TriangleAlert } from "lucide-react"; import { TriangleAlert } from "lucide-react";
@@ -51,6 +51,7 @@ export default function Main() {
{"icon": <SiGmail />, "name": t("contact.contacts.2.name"), "username": "rezcjikov@gmail.com", "url": "mailto:rezcjikov@gmail.com"}, {"icon": <SiGmail />, "name": t("contact.contacts.2.name"), "username": "rezcjikov@gmail.com", "url": "mailto:rezcjikov@gmail.com"},
{"icon": <SiVk />, "name": t("contact.contacts.3.name"), "username": "@rezcjikov", "url": "https://vk.com/rezcjikov/"}, {"icon": <SiVk />, "name": t("contact.contacts.3.name"), "username": "@rezcjikov", "url": "https://vk.com/rezcjikov/"},
{"icon": <SiTiktok />, "name": t("contact.contacts.4.name"), "username": "@gattowolfe", "url": "https://tiktok.com/@gattowolfe/"}, {"icon": <SiTiktok />, "name": t("contact.contacts.4.name"), "username": "@gattowolfe", "url": "https://tiktok.com/@gattowolfe/"},
{"icon": <SiGithub />, "name": t("contact.contacts.5.name"), "username": "@dusiburg", "url": "https://github.com/dusiburg/"},
] ]
const languages = [ const languages = [

View File

@@ -59,13 +59,19 @@
"logoAlt": "Sudoku", "logoAlt": "Sudoku",
"title": "Sudoku", "title": "Sudoku",
"description": "This is a simple game written on Next.js. It's basically the first game I have ever written so that's a nice experience.", "description": "This is a simple game written on Next.js. It's basically the first game I have ever written so that's a nice experience.",
"text": "My friend got me into Sudoku and very soon I was surprised to find that I liked it. It's not as difficult a game as I thought, and moreover it's a great brain teaser. One day, I decided to write my own site with Sudoku because I couldn't stand the large amount of advertising in apps. So, that's the result. I don't know why I chose this 8-bit aesthetic but I like it. Maybe I'll update the site one day and add some new features." "text": "My friend got me into Sudoku and very soon I was surprised to find that I liked it. It's not as difficult a game as I thought, and moreover it's a great brain teaser. One day, I decided to write my own site with Sudoku because I couldn't stand the large amount of advertising in apps. So, that's the result. I don't know why I chose this 8-bit aesthetic but I like it."
}, },
{ {
"logoAlt": "Fastlink logo", "logoAlt": "Fastlink logo",
"title": "Fastlink", "title": "Fastlink",
"description": "This is what I'm currently working on (and, surprisingly, it's not related to Dusiburg). It's a try to create a messanger-like service in order to practice my Go knowledge in backend. Of course, it's not ready yet...", "description": "This is what I'm currently working on (and, surprisingly, it's not related to Dusiburg). It's a try to create a messanger-like service in order to practice my Go knowledge in backend. Of course, it's not ready yet...",
"text": "I'm currently working on Fastlink — an attempt to create a simple messenger with backend built with Go. The project is still being developed. I hope to eventually bring it to a state where I can publish it on GitHub. Basically, the main purpose of the project is to help me understand Go better." "text": "I'm currently working on Fastlink — an attempt to create a simple messenger with backend built with Go. The project is still being developed. I hope to eventually bring it to a state where I can publish it on GitHub. Basically, the main purpose of the project is to help me understand Go better."
},
{
"logoAlt": "Notes logo",
"title": "Notes",
"description": "A simple note-taking desktop application built with Wails (Go) and React because I wanted something simple and light for storing some things I have to do.",
"text": "A simple note-taking desktop application built with Wails (Go) and React. I wanted something lightweight for keeping my tasks. I didn't really like Notion because I had to turn on my VPN every time I visited it, and if I forgot, I'd get automatically logged out. Obsidian felt a bit too complicated for my needs, so I decided to create my own app."
} }
] ]
}, },
@@ -105,7 +111,8 @@
{ "name": "E-Mail #1" }, { "name": "E-Mail #1" },
{ "name": "E-Mail #2" }, { "name": "E-Mail #2" },
{ "name": "VK" }, { "name": "VK" },
{ "name": "Tiktok" } { "name": "Tiktok" },
{ "name": "Github" }
] ]
} }
} }

View File

@@ -59,13 +59,19 @@
"logoAlt": "Sudoku", "logoAlt": "Sudoku",
"title": "Sudoku", "title": "Sudoku",
"description": "This is a simple game written on Next.js. It's basically the first game I have ever written so that's a nice experience.", "description": "This is a simple game written on Next.js. It's basically the first game I have ever written so that's a nice experience.",
"text": "My friend got me into Sudoku and very soon I was surprised to find that I liked it. It's not as difficult a game as I thought, and moreover it's a great brain teaser. One day, I decided to write my own site with Sudoku because I couldn't stand the large amount of advertising in apps. So, that's the result. I don't know why I chose this 8-bit aesthetic but I like it. Maybe I'll update the site one day and add some new features." "text": "My friend got me into Sudoku and very soon I was surprised to find that I liked it. It's not as difficult a game as I thought, and moreover it's a great brain teaser. One day, I decided to write my own site with Sudoku because I couldn't stand the large amount of advertising in apps. So, that's the result. I don't know why I chose this 8-bit aesthetic but I like it."
}, },
{ {
"logoAlt": "Fastlink logo", "logoAlt": "Fastlink logo",
"title": "Fastlink", "title": "Fastlink",
"description": "This is what I'm currently working on (and, surprisingly, it's not related to Dusiburg). It's a try to create a messanger-like service in order to practice my Go knowledge in backend. Of course, it's not ready yet...", "description": "This is what I'm currently working on (and, surprisingly, it's not related to Dusiburg). It's a try to create a messanger-like service in order to practice my Go knowledge in backend. Of course, it's not ready yet...",
"text": "I'm currently working on Fastlink — an attempt to create a simple messenger with backend built with Go. The project is still being developed. I hope to eventually bring it to a state where I can publish it on GitHub. Basically, the main purpose of the project is to help me understand Go better." "text": "I'm currently working on Fastlink — an attempt to create a simple messenger with backend built with Go. The project is still being developed. I hope to eventually bring it to a state where I can publish it on GitHub. Basically, the main purpose of the project is to help me understand Go better."
},
{
"logoAlt": "Notes logo",
"title": "Notes",
"description": "A simple note-taking desktop application built with Wails (Go) and React because I wanted something simple and light for storing some things I have to do.",
"text": "A simple note-taking desktop application built with Wails (Go) and React. I wanted something lightweight for keeping my tasks. I didn't really like Notion because I had to turn on my VPN every time I visited it, and if I forgot, I'd get automatically logged out. Obsidian felt a bit too complicated for my needs, so I decided to create my own app."
} }
] ]
}, },
@@ -105,7 +111,8 @@
{ "name": "E-Mail #1" }, { "name": "E-Mail #1" },
{ "name": "E-Mail #2" }, { "name": "E-Mail #2" },
{ "name": "VK" }, { "name": "VK" },
{ "name": "Tiktok" } { "name": "Tiktok" },
{ "name": "Github" }
] ]
} }
} }

View File

@@ -50,7 +50,7 @@
"text": "Долгое время в Объединении Виртуальных Наций не было актуальной карты стран-участников. Карты, создаваемые в фоторедакторах были неточными и быстро устаревали. Поэтому я решил создать интерактивную карту, которую легко можно было бы обновлять и, которая позволяла бы легко находить нужную информацию о странах ОВН." "text": "Долгое время в Объединении Виртуальных Наций не было актуальной карты стран-участников. Карты, создаваемые в фоторедакторах были неточными и быстро устаревали. Поэтому я решил создать интерактивную карту, которую легко можно было бы обновлять и, которая позволяла бы легко находить нужную информацию о странах ОВН."
}, },
{ {
"logoAlt": "Vote logo", "logoAlt": "Логотип Vote",
"title": "ЦИК Дусибурга", "title": "ЦИК Дусибурга",
"description": "Платформа для голосований, где проводятся выборы, референдумы и опросы. Сервис создан для того, чтобы исключительно Граждане Дусибурга могли на них голосовать.", "description": "Платформа для голосований, где проводятся выборы, референдумы и опросы. Сервис создан для того, чтобы исключительно Граждане Дусибурга могли на них голосовать.",
"text": "Когда голосования Дусибурга проводились в ВК, нужно было выбирать между честностью и анонимностью, ведь кандидаты зачастую просили друзей проголосовать в закрытом голосовании. Поэтому я сделал собственную платформу с авторизацией через Dusiburg ID, где голосуют только граждане. Недавно я добавил систему регистрации законопроектов для Парламента: парламетарии голосуют, результат автоматически отправляется Президенту, который подписывает или отклонияет закон. При успехе — он публикуется на Dusiburg ID. Большой сложностью была реализация взаимодействия сайта ЦИК, Dusiburg ID и ботов в ВК и Телеграме." "text": "Когда голосования Дусибурга проводились в ВК, нужно было выбирать между честностью и анонимностью, ведь кандидаты зачастую просили друзей проголосовать в закрытом голосовании. Поэтому я сделал собственную платформу с авторизацией через Dusiburg ID, где голосуют только граждане. Недавно я добавил систему регистрации законопроектов для Парламента: парламетарии голосуют, результат автоматически отправляется Президенту, который подписывает или отклонияет закон. При успехе — он публикуется на Dusiburg ID. Большой сложностью была реализация взаимодействия сайта ЦИК, Dusiburg ID и ботов в ВК и Телеграме."
@@ -59,13 +59,19 @@
"logoAlt": "Sudoku", "logoAlt": "Sudoku",
"title": "Sudoku", "title": "Sudoku",
"description": "Это простенькая игра, написанная на Next.js. По сути, это первая игра, которую я написал, поэтому считаю, что это прекрасный опыт.", "description": "Это простенькая игра, написанная на Next.js. По сути, это первая игра, которую я написал, поэтому считаю, что это прекрасный опыт.",
"text": "Однажды моя подруга предложила поиграть в Судоку, и очень скоро я полюбил эту игру. Она оказалась не такой сложной, как я думал. Более того, это прекрасная разминка для мозга. Устав от большого количества рекламы в приложениях с Судоку, я решил написать свой собственный сайт, как говориться: с блекджеком и ... Я не знаю, почему я выбрал этот пиксельный дизайн, но он прикольный. Может быть, когда-нибудь я обновлю этот сайт и добавлю какие-то новые штучки туда." "text": "Однажды моя подруга предложила поиграть в Судоку, и очень скоро я полюбил эту игру. Она оказалась не такой сложной, как я думал. Более того, это прекрасная разминка для мозга. Устав от большого количества рекламы в приложениях с Судоку, я решил написать свой собственный сайт, как говориться: с блекджеком и ... Я не знаю, почему я выбрал этот пиксельный дизайн, но он прикольный."
}, },
{ {
"logoAlt": "Fastlink logo", "logoAlt": "Логотип Fastlink",
"title": "Fastlink", "title": "Fastlink",
"description": "Это — над чем я работаю прямо сейчас (и, удивительно, не связано с Дусибургом). Это попытка создать подобие мессенджера. Делаю я это с целью попрактиковать мои знания в Go. Конечно, пока Fastlink ещё не готов...", "description": "Это — над чем я работаю прямо сейчас (и, удивительно, не связано с Дусибургом). Это попытка создать подобие мессенджера. Делаю я это с целью попрактиковать мои знания в Go. Конечно, пока Fastlink ещё не готов...",
"text": "Сейчас я работаю над Fastlink — попыткой сделать небольшой мессенджер с бекэндом на Go. Проект ещё в разработке. Надеюсь однажды довести его до состояния, когда его можно будет выложить на GitHub. По большому счёту, это проект, цель которого — помочь мне лучше понять Go." "text": "Сейчас я работаю над Fastlink — попыткой сделать небольшой мессенджер с бекэндом на Go. Проект ещё в разработке. Надеюсь однажды довести его до состояния, когда его можно будет выложить на GitHub. По большому счёту, это проект, цель которого — помочь мне лучше понять Go."
},
{
"logoAlt": "Логотип Notes",
"title": "Notes",
"description": "Простое приложение для компьютера для ведения заметок, созданное с помощью Wails (Go) и React. Я хотел что-то лёгкое и простое для ведения списка дел или быстрых заметок",
"text": "Простое приложение для компьютера для ведения заметок, созданное с помощью Wails (Go) и React. Я хотел что-то лёгкое и простое для ведения списка дел или быстрых заметок. Мне не очень нравился Notion, потому что каждый раз нужно было включать VPN, а если я забывал — меня автоматически выкидывало из аккаунта. Obsidian показался слишком сложным для простых заметок, поэтому я решил сделать что-то своё."
} }
] ]
}, },
@@ -105,7 +111,8 @@
{ "name": "Почта 1" }, { "name": "Почта 1" },
{ "name": "Почта 2" }, { "name": "Почта 2" },
{ "name": "ВК" }, { "name": "ВК" },
{ "name": "Тикток" } { "name": "Тикток" },
{ "name": "Гитхаб" }
] ]
} }
} }

View File

@@ -1,24 +1,18 @@
FROM node:20-slim AS builder FROM node:20-alpine AS builder
RUN useradd -m appuser
WORKDIR /app WORKDIR /app
COPY package*.json ./
COPY package.json yarn.lock ./ RUN npm install
RUN yarn install --frozen-lockfile
COPY . . COPY . .
RUN npm run build
RUN --mount=type=cache,target=/app/.next/cache yarn build FROM node:20-alpine
FROM node:20-slim AS runner
WORKDIR /app WORKDIR /app
COPY --from=builder /app ./ COPY package*.json ./
RUN npm install --omit=dev
USER appuser COPY --from=builder /app/.next ./.next
COPY --from=builder /app/dictionary ./dictionary
COPY --from=builder /app/public ./public
EXPOSE 80 EXPOSE 80
CMD ["npm", "start", "--", "-p", "80", "-H", "0.0.0.0"]
CMD ["yarn", "start", "-p", "80", "-H", "0.0.0.0"]
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD wget -q --spider http://localhost:80 || exit 1 CMD wget -q --spider http://localhost:80/ || exit 1

View File

@@ -1,6 +1,6 @@
[ [
{ {
"id": 0, "id": 1,
"screenshots": [ "screenshots": [
"/images/screenshots/id/1.png", "/images/screenshots/id/1.png",
"/images/screenshots/id/4.png", "/images/screenshots/id/4.png",
@@ -20,7 +20,7 @@
"skills": ["Next.js", "Tailwind", "Postgres", "Supabase"] "skills": ["Next.js", "Tailwind", "Postgres", "Supabase"]
}, },
{ {
"id": 1, "id": 2,
"screenshots": [ "screenshots": [
"/images/screenshots/map/1.png", "/images/screenshots/map/1.png",
"/images/screenshots/map/2.png", "/images/screenshots/map/2.png",
@@ -39,7 +39,7 @@
"skills": ["Next.js", "Tailwind", "Mapbox", "Postgres", "Supabase"] "skills": ["Next.js", "Tailwind", "Mapbox", "Postgres", "Supabase"]
}, },
{ {
"id": 2, "id": 3,
"screenshots": [ "screenshots": [
"/images/screenshots/vote/1.png" "/images/screenshots/vote/1.png"
], ],
@@ -54,11 +54,12 @@
"skills": ["Next.js", "Tailwind", "Prisma", "Postgres", "Supabase"] "skills": ["Next.js", "Tailwind", "Prisma", "Postgres", "Supabase"]
}, },
{ {
"id": 3, "id": 4,
"screenshots": [ "screenshots": [
"/images/screenshots/sudoku/1.png", "/images/screenshots/sudoku/1.png",
"/images/screenshots/sudoku/3.png", "/images/screenshots/sudoku/3.png",
"/images/screenshots/sudoku/2.png" "/images/screenshots/sudoku/2.png",
"/images/screenshots/sudoku/4.png"
], ],
"screenshotBg": "bg-zinc-800", "screenshotBg": "bg-zinc-800",
"logo": "/images/logos/sudoku.png", "logo": "/images/logos/sudoku.png",
@@ -71,7 +72,7 @@
"skills": ["Next.js", "Tailwind", "Shadcn"] "skills": ["Next.js", "Tailwind", "Shadcn"]
}, },
{ {
"id": 4, "id": 5,
"screenshots": [ "screenshots": [
"/images/screenshots/fastlink/1.png", "/images/screenshots/fastlink/1.png",
"/images/screenshots/fastlink/2.png", "/images/screenshots/fastlink/2.png",
@@ -84,5 +85,21 @@
"text": "projects.items.4.text", "text": "projects.items.4.text",
"description": "projects.items.4.description", "description": "projects.items.4.description",
"skills": ["Next.js", "Tailwind", "Shadcn", "Go", "Postgres", "Supabase"] "skills": ["Next.js", "Tailwind", "Shadcn", "Go", "Postgres", "Supabase"]
},
{
"id": 6,
"screenshots": [
"/images/screenshots/notes/1.png",
"/images/screenshots/notes/2.png"
],
"screenshotBg": "bg-black",
"logo": "/images/logos/notes.png",
"logoAlt": "projects.items.5.logoAlt",
"title": "projects.items.5.title",
"url": "https://github.com/dusiburg/notes",
"hostname": "@dusiburg/notes",
"text": "projects.items.5.text",
"description": "projects.items.5.description",
"skills": ["Go", "React"]
} }
] ]

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB