Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions website/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules/
docs/.vitepress/dist/
docs/.vitepress/cache/
.DS_Store
177 changes: 177 additions & 0 deletions website/docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
import { defineConfig } from 'vitepress'

export default defineConfig({
title: 'Talker',
description: 'Advanced error handler and logger for Dart and Flutter apps',

head: [
['link', { rel: 'icon', href: '/logo.png' }],
],

locales: {
root: {
label: 'English',
lang: 'en',
themeConfig: {
nav: [
{ text: 'Guide', link: '/getting-started/installation' },
{ text: 'Packages', link: '/packages/talker' },
{ text: 'Integrations', link: '/integrations/dio' },
{
text: 'Links',
items: [
{ text: 'pub.dev', link: 'https://pub.dev/packages/talker' },
{ text: 'GitHub', link: 'https://github.com/Frezyx/talker' },
{ text: 'Web Demo', link: 'https://frezyx.github.io/talker' },
],
},
],
sidebar: {
'/': [
{
text: 'Getting Started',
collapsed: false,
items: [
{ text: 'Installation', link: '/getting-started/installation' },
{ text: 'Quick Start', link: '/getting-started/quick-start' },
{ text: 'Why Talker?', link: '/getting-started/why-talker' },
],
},
{
text: 'Core Packages',
collapsed: false,
items: [
{ text: 'talker', link: '/packages/talker' },
{ text: 'talker_logger', link: '/packages/talker-logger' },
{ text: 'talker_flutter', link: '/packages/talker-flutter' },
],
},
{
text: 'Integrations',
collapsed: false,
items: [
{ text: 'Dio Logger', link: '/integrations/dio' },
{ text: 'HTTP Logger', link: '/integrations/http' },
{ text: 'BLoC Logger', link: '/integrations/bloc' },
{ text: 'Riverpod Logger', link: '/integrations/riverpod' },
{ text: 'Chopper Logger', link: '/integrations/chopper' },
{ text: 'gRPC Logger', link: '/integrations/grpc' },
],
},
{
text: 'Guides',
collapsed: false,
items: [
{ text: 'Custom Log Types', link: '/guides/custom-logs' },
{ text: 'Crashlytics Integration', link: '/guides/crashlytics' },
{ text: 'Route Logging', link: '/guides/routing' },
{ text: 'Custom Error Messages', link: '/guides/custom-error-messages' },
],
},
{
text: 'Examples',
link: '/examples',
},
],
},
},
},
ru: {
label: 'Русский',
lang: 'ru',
link: '/ru/',
themeConfig: {
nav: [
{ text: 'Руководство', link: '/ru/getting-started/installation' },
{ text: 'Пакеты', link: '/ru/packages/talker' },
{ text: 'Интеграции', link: '/ru/integrations/dio' },
{
text: 'Ссылки',
items: [
{ text: 'pub.dev', link: 'https://pub.dev/packages/talker' },
{ text: 'GitHub', link: 'https://github.com/Frezyx/talker' },
{ text: 'Web Demo', link: 'https://frezyx.github.io/talker' },
],
},
],
sidebar: {
'/ru/': [
{
text: 'Начало работы',
collapsed: false,
items: [
{ text: 'Установка', link: '/ru/getting-started/installation' },
{ text: 'Быстрый старт', link: '/ru/getting-started/quick-start' },
{ text: 'Почему Talker?', link: '/ru/getting-started/why-talker' },
],
},
{
text: 'Основные пакеты',
collapsed: false,
items: [
{ text: 'talker', link: '/ru/packages/talker' },
{ text: 'talker_logger', link: '/ru/packages/talker-logger' },
{ text: 'talker_flutter', link: '/ru/packages/talker-flutter' },
],
},
{
text: 'Интеграции',
collapsed: false,
items: [
{ text: 'Dio Logger', link: '/ru/integrations/dio' },
{ text: 'HTTP Logger', link: '/ru/integrations/http' },
{ text: 'BLoC Logger', link: '/ru/integrations/bloc' },
{ text: 'Riverpod Logger', link: '/ru/integrations/riverpod' },
{ text: 'Chopper Logger', link: '/ru/integrations/chopper' },
{ text: 'gRPC Logger', link: '/ru/integrations/grpc' },
],
},
{
text: 'Руководства',
collapsed: false,
items: [
{ text: 'Пользовательские логи', link: '/ru/guides/custom-logs' },
{ text: 'Интеграция с Crashlytics', link: '/ru/guides/crashlytics' },
{ text: 'Логирование маршрутов', link: '/ru/guides/routing' },
{ text: 'Кастомные сообщения об ошибках', link: '/ru/guides/custom-error-messages' },
],
},
{
text: 'Примеры',
link: '/ru/examples',
},
],
},
outline: { label: 'Содержание' },
docFooter: { prev: 'Предыдущая', next: 'Следующая' },
darkModeSwitchLabel: 'Тема',
sidebarMenuLabel: 'Меню',
returnToTopLabel: 'Наверх',
langMenuLabel: 'Язык',
},
},
},

themeConfig: {
logo: '/logo.png',
siteTitle: 'Talker',

socialLinks: [
{ icon: 'github', link: 'https://github.com/Frezyx/talker' },
],

search: {
provider: 'local',
},

editLink: {
pattern: 'https://github.com/Frezyx/talker/edit/master/website/docs/:path',
text: 'Edit this page on GitHub',
},

footer: {
message: 'Released under the MIT License.',
copyright: 'Copyright © 2022-present Stanislav Ilin',
},
},
})
100 changes: 100 additions & 0 deletions website/docs/.vitepress/theme/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/**
* Talker Documentation - Purple Theme
*
* Colors based on Material Purple (#7C4DFF)
* @see https://vitepress.dev/reference/default-theme-config#custom-css
*/

:root {
/* Brand / Primary Purple */
--vp-c-brand-1: #7C4DFF;
--vp-c-brand-2: #9C6FFF;
--vp-c-brand-3: #651FFF;
--vp-c-brand-soft: rgba(124, 77, 255, 0.14);

/* Tip color - same as brand */
--vp-c-tip-1: var(--vp-c-brand-1);
--vp-c-tip-2: var(--vp-c-brand-2);
--vp-c-tip-3: var(--vp-c-brand-3);
--vp-c-tip-soft: var(--vp-c-brand-soft);

/* Button colors */
--vp-button-brand-border: transparent;
--vp-button-brand-text: #fff;
--vp-button-brand-bg: var(--vp-c-brand-1);
--vp-button-brand-hover-border: transparent;
--vp-button-brand-hover-text: #fff;
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
--vp-button-brand-active-border: transparent;
--vp-button-brand-active-text: #fff;
--vp-button-brand-active-bg: var(--vp-c-brand-3);

/* Home hero name gradient */
--vp-home-hero-name-color: transparent;
--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#7C4DFF 30%,
#B388FF
);

/* Home hero image glow */
--vp-home-hero-image-background-image: linear-gradient(
-45deg,
#7C4DFF 50%,
#B388FF 50%
);
--vp-home-hero-image-filter: blur(44px);
}

.dark {
--vp-c-brand-1: #9C6FFF;
--vp-c-brand-2: #B388FF;
--vp-c-brand-3: #7C4DFF;
--vp-c-brand-soft: rgba(156, 111, 255, 0.16);

--vp-home-hero-name-background: -webkit-linear-gradient(
120deg,
#B388FF 30%,
#7C4DFF
);
}

/* Sidebar active link */
.VPSidebar .is-active > .link > .text {
color: var(--vp-c-brand-1) !important;
}

/* Custom badge for package versions */
.package-badge {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
font-size: 12px;
font-weight: 600;
background-color: var(--vp-c-brand-soft);
color: var(--vp-c-brand-1);
}

/* DartPad embed styling */
.dartpad-embed {
width: 100%;
border: 1px solid var(--vp-c-divider);
border-radius: 8px;
overflow: hidden;
margin: 16px 0;
}

.dartpad-embed iframe {
width: 100%;
height: 400px;
border: none;
}

/* Feature cards on home page */
.VPFeatures .VPFeature {
border-color: var(--vp-c-brand-soft) !important;
}

.VPFeatures .VPFeature:hover {
border-color: var(--vp-c-brand-1) !important;
}
4 changes: 4 additions & 0 deletions website/docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import DefaultTheme from 'vitepress/theme'
import './custom.css'

export default DefaultTheme
67 changes: 67 additions & 0 deletions website/docs/examples.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Examples

## Interactive DartPad Examples

### Basic Logging

Try Talker's logging levels in your browser:

<div class="dartpad-embed">
<iframe
src="https://dartpad.dev/embed-dart.html?run=true&split=50&theme=dark&code=aW1wb3J0ICdwYWNrYWdlOnRhbGtlci90YWxrZXIuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZmluYWwgdGFsa2VyID0gVGFsa2VyKCk7CgogIHRhbGtlci5pbmZvKCdBcHAgc3RhcnRlZCBzdWNjZXNzZnVsbHkhJyk7CiAgdGFsa2VyLmRlYnVnKCdMb2FkaW5nIHVzZXIgcHJlZmVyZW5jZXMuLi4nKTsKICB0YWxrZXIud2FybmluZygnQ2FjaGUgaXMgYWxtb3N0IGZ1bGwnKTsKICB0YWxrZXIuZ29vZCgnVXNlciBwcm9maWxlIGxvYWRlZCEnKTsKICB0YWxrZXIudmVyYm9zZSgnRGV0YWlsZWQgdHJhY2UgaW5mb3JtYXRpb24nKTsKICB0YWxrZXIuY3JpdGljYWwoJ0RhdGFiYXNlIGNvbm5lY3Rpb24gbG9zdCEnKTsKfQ%3D%3D"
loading="lazy"
style="width: 100%; height: 400px; border: none;"
></iframe>
</div>

### Error Handling

See how Talker handles exceptions with stack traces:

<div class="dartpad-embed">
<iframe
src="https://dartpad.dev/embed-dart.html?run=true&split=50&theme=dark&code=aW1wb3J0ICdwYWNrYWdlOnRhbGtlci90YWxrZXIuZGFydCc7Cgp2b2lkIG1haW4oKSB7CiAgZmluYWwgdGFsa2VyID0gVGFsa2VyKCk7CgogIC8vIEhhbmRsZSBhbiBFeGNlcHRpb24KICB0cnkgewogICAgdGhyb3cgRXhjZXB0aW9uKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJyk7CiAgfSBjYXRjaCAoZSwgc3QpIHsKICAgIHRhbGtlci5oYW5kbGUoZSwgc3QsICdGYWlsZWQgdG8gZmV0Y2ggdXNlciBkYXRhJyk7CiAgfQoKICAvLyBIYW5kbGUgYW4gRXJyb3IKICB0cnkgewogICAgdGhyb3cgQXJndW1lbnRFcnJvcignSW52YWxpZCB1c2VyIElEJyk7CiAgfSBjYXRjaCAoZSwgc3QpIHsKICAgIHRhbGtlci5oYW5kbGUoZSwgc3QsICdWYWxpZGF0aW9uIGVycm9yJyk7CiAgfQoKICAvLyBBY2Nlc3MgaGlzdG9yeQogIHByaW50KCdcbi0tLSBIaXN0b3J5ICgtLS0nKTsKICBwcmludCgnVG90YWwgbG9nczogJHt0YWxrZXIuaGlzdG9yeS5sZW5ndGh9Jyk7Cn0%3D"
loading="lazy"
style="width: 100%; height: 450px; border: none;"
></iframe>
</div>

### Custom Log Types

Create your own log types:

<div class="dartpad-embed">
<iframe
src="https://dartpad.dev/embed-dart.html?run=true&split=50&theme=dark&code=aW1wb3J0ICdwYWNrYWdlOnRhbGtlci90YWxrZXIuZGFydCc7CgpjbGFzcyBIdHRwTG9nIGV4dGVuZHMgVGFsa2VyTG9nIHsKICBIdHRwTG9nKFN0cmluZyBzdXBlci5tZXNzYWdlKTsKCiAgQG92ZXJyaWRlCiAgU3RyaW5nIGdldCBrZXkgPT4gJ2h0dHBfbG9nJzsKCiAgQG92ZXJyaWRlCiAgU3RyaW5nIGdldCB0aXRsZSA9PiAnSFRUUCc7CgogIEBvdmVycmlkZQogIEFuc2lQZW4gZ2V0IHBlbiA9PiBBbnNpUGVuKCkuLmN5YW4oKTsKfQoKY2xhc3MgQW5hbHl0aWNzTG9nIGV4dGVuZHMgVGFsa2VyTG9nIHsKICBBbmFseXRpY3NMb2coU3RyaW5nIGV2ZW50LCB0aGlzLnBhcmFtcykgOiBzdXBlcihldmVudCk7CgogIGZpbmFsIE1hcDxTdHJpbmcsIGR5bmFtaWM%2BIHBhcmFtczsKCiAgQG92ZXJyaWRlCiAgU3RyaW5nIGdldCBrZXkgPT4gJ2FuYWx5dGljcyc7CgogIEBvdmVycmlkZQogIFN0cmluZyBnZXQgdGl0bGUgPT4gJ0FOQUxZVElDUyc7CgogIEBvdmVycmlkZQogIEFuc2lQZW4gZ2V0IHBlbiA9PiBBbnNpUGVuKCkuLm1hZ2VudGEoKTsKCiAgQG92ZXJyaWRlCiAgU3RyaW5nIGdlbmVyYXRlVGV4dE1lc3NhZ2Uoe1RpbWVGb3JtYXQ%2FIHRpbWVGb3JtYXR9KSB7CiAgICByZXR1cm4gJyR7c3VwZXIuZ2VuZXJhdGVUZXh0TWVzc2FnZSh0aW1lRm9ybWF0OiB0aW1lRm9ybWF0KX1cblBhcmFtczogJHBhcmFtcyc7CiAgfQp9Cgp2b2lkIG1haW4oKSB7CiAgZmluYWwgdGFsa2VyID0gVGFsa2VyKCk7CgogIHRhbGtlci5sb2dDdXN0b20oSHR0cExvZygnR0VUIC9hcGkvdXNlcnMg4oCUICAyMDAgT0snKSk7CgogIHRhbGtlci5sb2dDdXN0b20oCiAgICBBbmFseXRpY3NMb2coJ3VzZXJfbG9naW4nLCB7J21ldGhvZCc6ICdnb29nbGUnfSksCiAgKTsKCiAgdGFsa2VyLmluZm8oJ1JlZ3VsYXIgaW5mbyBsb2cgZm9yIGNvbXBhcmlzb24nKTsKfQ%3D%3D"
loading="lazy"
style="width: 100%; height: 500px; border: none;"
></iframe>
</div>

## Shop App Example

A full production-like Flutter application demonstrating Talker integration:

- Talker setup with DI
- HTTP logging with Dio
- BLoC state management logging
- TalkerScreen and TalkerMonitor
- Error handling with TalkerWrapper
- Route logging

📂 [View Shop App on GitHub](https://github.com/Frezyx/talker/tree/master/examples/shop_app_example)

## Web Demo

Try the fully interactive Flutter web demo with `TalkerScreen` and `TalkerMonitor`:

🌐 [Open Web Demo](https://frezyx.github.io/talker)

<style>
.dartpad-embed {
border: 1px solid var(--vp-c-divider);
border-radius: 12px;
overflow: hidden;
margin: 16px 0;
}
</style>
Loading