Skip to content

Instantly share code, notes, and snippets.

View sunmeat's full-sized avatar
🪪
https://sunmeat.shop/

Oleksandr Zahoruiko sunmeat

🪪
https://sunmeat.shop/
View GitHub Profile
@sunmeat
sunmeat / FirestoreSink.cs
Created September 21, 2026 12:48
логування у фаєрбейс з використанням бібліотеки Serilog
// Soccer.WebAPI / Logging / FirestoreSink.cs:
// FirestoreSink знаходиться у WebAPI, оскільки він відповідає не за роботу застосунку з Firestore,
// а за збереження логів WebAPI у Firestore. Infrastructure містить доступ до даних,
// а WebAPI.Logging відповідає за логування HTTP-застосунку
using Google.Cloud.Firestore;
using Serilog.Core;
using Serilog.Events;
@sunmeat
sunmeat / Program.cs
Created September 21, 2026 12:11
логування у файл з використанням бібліотеки Serilog
// dotnet add Soccer.WebAPI package Serilog.AspNetCore
// dotnet add Soccer.WebAPI package Serilog.Sinks.File
// dotnet add Soccer.WebAPI package Serilog.Formatting.Compact # для JSON
// папка з логами буде в Soccer.WebAPI/logs/
// не забудьте додати в .gitignore: text**/logs/
using Soccer.Application.DependencyInjection;
using Soccer.Infrastructure.DependencyInjection;
@sunmeat
sunmeat / FileLoggerProvider.cs
Created September 21, 2026 12:04
ручний спосіб логування у файл
// у чистому Microsoft.Extensions.Logging немає вбудованого файлового провайдера, але можна написати свій:
// Soccer.Infrastructure/Logging/FileLoggerProvider.cs
public sealed class FileLoggerProvider : ILoggerProvider
{
private readonly StreamWriter _writer;
private readonly object _lock = new();
public FileLoggerProvider(string path)
@sunmeat
sunmeat / arch.txt
Last active September 19, 2026 11:48
react clean architecture example
src/
├── app/ # Presentation / Application entry point
│ ├── App.jsx
│ ├── main.jsx
│ ├── router/
│ │ └── index.jsx
│ ├── providers/
│ │ ├── AuthProvider.jsx
│ │ ├── QueryProvider.jsx
@sunmeat
sunmeat / App.css
Created September 18, 2026 14:17
React + Web API SPF example (tanstack table)
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Archivo+Black&display=swap');
:root {
--bg: #050914;
--bg-elevated: #0c1220;
--surface: #10182c;
--surface-hover: #182238;
--border: #23304a;
--text: #f4f6fb;
--text-muted: #8b96b3;
@sunmeat
sunmeat / App.css
Last active September 19, 2026 13:31
React + Web API filtration example (tanstack table)
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&family=Archivo+Black&display=swap');
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
@sunmeat
sunmeat / App.css
Created September 18, 2026 12:25
React + Web API pagination example (tanstack table)
...
.pagination {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
gap: 10px;
padding: 18px 22px;
@sunmeat
sunmeat / task.md
Last active September 16, 2026 16:49
локалізація (кінопошук або одразу курсовий проєкт - на ваш вибір)

Багатомовний сайт, глобалізація, локалізація

Модифікувати існуючий веб-додаток «Кінопошук» таким чином, щоб вийшов багатомовний сайт (2-3 мови буде достатньо).

Інструкції по локалізації фронтенду, бекенду та БД можна знайти за посиланням https://github.com/sunmeat/aspnetcore_localization/tree/master/localization%20instructions%20and%20files

Вистачить тільки локалізації фронтенду (бек та БД не обов'язково локалізувати).

При бажанні, можна одразу спробувати зробити локалізацію для Вашого курсового проєкту, але прогрес по цій задачі

@sunmeat
sunmeat / task.md
Last active September 14, 2026 13:06
ДЗ: чиста архітектура

Clean Architecture + ASP.NET Core Web API + React

Розробка веб-додатку «Кінопошук» / «10 найкращих фільмів»

1. Мета

Перебудувати попередній проєкт «Кінопошук» у Clean Architecture та розділити backend і frontend.

Backend:

@sunmeat
sunmeat / task.md
Last active September 14, 2026 12:52
Практика: 3-рівнева архітектура, рівні BLL та PL

3-рівнева архітектура в ASP.NET Core MVC

Розробка Business Logic Layer та Presentation Layer

Веб-додаток «Кінопошук» / «10 найкращих фільмів»


Передумови

У попередньому практичному завданні було реалізовано Data Access Layer (DAL) для веб-додатку «Кінопошук»: