Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Technoyun

A production technology, software and gaming publication built with Blazor and ASP.NET Core

Technoyun product showcase

Technoyun is a responsive publishing platform that brings technology news, software guides, practical solutions, gaming coverage and curated discovery content together in one focused reading experience.

Website Release Blazor .NET SQL Server Tailwind CSS

Visit Technoyun  •  Developer portfolio

Designed, developed, deployed and maintained end-to-end by Yusuf Uğuz: public reading experience, editorial administration, ASP.NET Core API, SQL Server data layer, analytics, SEO infrastructure and production deployment.


Contents


Product overview

Technoyun is a live, independent publication for readers interested in technology, software development, games and the wider digital world. Its public experience is organized around fast discovery: a featured story, current news, step-by-step guides, practical solutions and list-style content are surfaced in distinct sections without making the reader navigate a traditional archive first.

The platform is split into two production applications. A Blazor Server web application renders the public site and authenticated administration interface; a separate ASP.NET Core REST API owns identity, content, categories, tags, uploads and analytics. Entity Framework Core persists application data in SQL Server.

The interface supports Turkish and English localization. Published editorial content currently focuses on Turkish readers.

Core experiences

Area What it provides
Home Featured content, recent news, guide and solution collections, discovery lists and social links.
Categories Slug-based archives, category navigation, featured stories, sorting and pagination.
Articles Clean reading layout, author and date metadata, view totals, tags, breadcrumbs and native sharing.
Search Server-backed full-site content search with result totals and paginated cards.
Discovery Curated lists for trends, popular stories, gaming coverage and evergreen technical content.
Localization Turkish and English interface resources with a persistent language switcher.
Responsive UI Desktop and mobile layouts built from a shared design-token and component system.

Public reading flow

  1. Discover a featured story or browse a focused section on the home page.
  2. Narrow the catalog through category, tag or search pages.
  3. Open a canonical, human-readable article URL based on its slug.
  4. Read Editor.js content rendered on the server with responsive images and structured article metadata.
  5. Continue through related categories and tags or share the current article.

Editorial and administration

The authenticated administration area is part of the same Blazor application, while all durable operations go through the API.

Workspace Capability
Dashboard Editorial overview and direct access to management tools.
Content management Create, edit, preview, publish, unpublish and feature articles.
Editor Block-based Editor.js authoring, main-image upload and automatic local draft recovery.
Taxonomy Create and manage categories; rename, merge and remove tags safely.
Users Role-aware user administration, locking, unlocking and password reset controls.
Analytics Page views, unique visitors, sessions, top pages, referrers and device distribution.
Statistics Content and platform-level operational summaries.
Release history Changelog-backed version KPIs, charts, filters and a release timeline.

Public self-registration and self-service password reset are feature-flagged off for the current editorial release. Authentication remains available to approved administrators and editors.

Architecture

┌──────────────────────────────────────────────────────────────────────┐
│ Blazor Server web application                                       │
│                                                                      │
│ Public pages + SEO  ⇄  reusable components  ⇄  typed data services  │
│ Admin/editor UI      ⇄  auth state + token refresh                  │
│        │                                    │                        │
│        └─ localization / Sentry / consent-aware analytics ──────────┤
└────────────────────────────────────┬─────────────────────────────────┘
                                     │ HTTPS + JSON + Bearer JWT
                                     ▼
┌──────────────────────────────────────────────────────────────────────┐
│ ASP.NET Core REST API                                                │
│                                                                      │
│ Controllers → validation / authorization → EF Core                  │
│      │              │                     │                          │
│      ├─ content     ├─ access + refresh   ├─ image processing       │
│      ├─ taxonomy    ├─ roles              ├─ analytics              │
│      └─ search      └─ rate limiting      └─ output caching         │
└────────────────────────────────────┬─────────────────────────────────┘
                                     │
                                     ▼
                          Microsoft SQL Server

The web project uses typed API clients and feature-level data services instead of placing HTTP details in Razor pages. Public pages are server-rendered for search engines and progressively become interactive through Blazor Server.

Current project structure

BlogWebApp/                                Blazor Server web application
├─ ApplicationRoots/                      App shell, routing and document head
├─ Components/                            Cards, grids, navigation, SEO and states
│  └─ Seo/                                Article, breadcrumb and website JSON-LD
├─ Core/                                  Routes, SEO URLs, feature flags, SemVer
├─ Data/
│  ├─ ApiClient/                          Typed REST clients
│  ├─ DTOs/                               Web/API contracts
│  └─ Models/                             View-facing content models
├─ Layout/                                Public, auth and admin layouts
├─ Pages/
│  ├─ Home/ CategoryContents/ TagContents/
│  ├─ ContentDetails/ SearchResults/
│  ├─ ContactAboutMe/ Legal/ User/
│  └─ AdminPanel/
│     ├─ Manage/                          Contents, categories, tags and users
│     ├─ Analytics/ Statistics/
│     └─ Versioning/                      Changelog-backed release history
├─ Resources/                             Turkish and English localization
├─ Services/                              Auth, content, analytics and release data
├─ Styles/                                Tailwind input and design system styles
├─ tests/                                 xUnit and bUnit coverage
├─ CHANGELOG.md                           Runtime source for release history
└─ Program.cs                             DI, middleware, SEO routes and endpoints

BlogWebAPI/                               ASP.NET Core REST API
├─ Analytics/                             User-agent and device classification
├─ Controllers/                           Auth, content, taxonomy, users, uploads
│                                          analytics and health/status endpoints
├─ Data/
│  ├─ DTOs/                               Explicit request/response contracts
│  ├─ Models/                             Content, tags, visits and refresh tokens
│  └─ AppDbContext.cs                     Identity + application persistence
├─ Infrastructure/
│  ├─ Images/                             Validation, resize and WebP conversion
│  ├─ ImageStorage/                       Storage abstraction and local provider
│  ├─ RefreshTokenService.cs              Secure issue, rotation and revocation
│  ├─ SlugGenerator.cs                    Canonical content identifiers
│  └─ GlobalExceptionHandler.cs           Problem-details error boundary
├─ Migrations/                            EF Core schema history
├─ tests/                                 API integration and unit tests
└─ Program.cs                             Auth, caching, CORS, limits and pipeline

Engineering highlights

Publishing, media and performance

  • Editor.js content is rendered server-side, keeping article text visible to crawlers and available before Blazor interactivity connects.
  • Uploaded image type is detected from magic bytes instead of trusting the file extension or browser-provided MIME type.
  • EXIF, GPS, ICC and XMP metadata are removed before storage.
  • Every accepted upload is normalized to content-addressed WebP variants at 400, 1024, 1920 and up to 2560 pixels; responsive srcset markup lets the browser download the appropriate size.
  • Tailwind CSS is compiled and minified during the .NET build. Public routes do not pay the cost of the admin component library unless it is required.
  • Persistent component state avoids a second data-loading flash when the prerendered page connects to its interactive server circuit.

Identity and API security

  • ASP.NET Core Identity and role-based authorization protect editorial and administration endpoints.
  • Short-lived bearer access tokens are paired with cryptographically random, rotating refresh tokens; only SHA-256 token hashes are persisted.
  • Logout revokes the active refresh token, while expired and revoked tokens are rejected by the rotation flow.
  • Upload, analytics and global API policies use fixed-window rate limiting.
  • Request size limits, DTO validation, centralized exception handling and problem details keep failure behavior explicit and consistent.
  • Swagger can be disabled or protected with HTTP Basic authentication in production configuration.

SEO, analytics and operations

  • Each indexable page emits a canonical URL, title, description, robots rules, Open Graph metadata and Twitter card metadata.
  • Article, breadcrumb and website JSON-LD are rendered alongside page metadata.
  • Slug-only article routes are canonical; legacy ID-based routes permanently redirect to the current address.
  • sitemap.xml, robots.txt, health checks and canonical HTTPS/host redirects are built into the web application.
  • Analytics activates only after cookie consent, filters recognized bots and deduplicates content views per visitor over a 12-hour window.
  • Sentry captures server and browser-side failures; Serilog provides structured API request and application logging.
  • The deployed version and release dashboard are driven from the same semantic version and CHANGELOG.md history used by the build.

Technology stack

Layer Technologies
Web Blazor Server, Razor components, .NET 10
UI Tailwind CSS, custom design tokens, MudBlazor for focused admin/auth surfaces
State & networking Typed HttpClient API clients, Blazor authentication state, token refresh service
API ASP.NET Core REST controllers, OpenAPI / Swagger, problem details
Identity & security ASP.NET Core Identity, JWT Bearer, rotating refresh tokens, role authorization, rate limiting
Persistence Entity Framework Core Code First, SQL Server, migrations
Media ImageSharp, content-addressed storage, responsive WebP variants
SEO Server rendering, canonical URLs, Open Graph, JSON-LD, sitemap and robots
Observability Sentry, Serilog, health checks and consent-aware first-party analytics
Testing xUnit, bUnit and ASP.NET Core integration tests
Deployment IIS out-of-process hosting, GitHub Actions and environment-based configuration

Screenshots

Every image below was captured directly from the live v1.2.1 deployment. The gallery shows real public data and current production layouts rather than design mockups.

Home and discovery

Current Technoyun home page

Category browsing

Current news category page

Article reading

Current article detail page

Search and publication identity

Search results About Technoyun
Current content search results Current about and contact page

Editorial access

Current administrator login

This repository is the public product showcase. The production web and API codebases are maintained separately.

Author

Yusuf Uğuz — Full-stack web and mobile developer

GitHub Portfolio Website

About

Technoyun web application is a technology-game themed news and content web application developed using .NET Blazor and web API and currently live on the internet.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors