powerofconsciousness.ru is the digital platform of Yana Tarasova, an international-level coach and author of the CNT method. The public site, the personal dashboard, the Telegram bot with an AI assistant, payments with an e-signed contract, a five-level affiliate programme, an admin CRM and a content engine with image generation all run on one backend and a shared database.
Client: the “Sila Soznaniya” training centre · Site: https://powerofconsciousness.ru · Category: platform
The short version
- A catalogue of 21 trainings and 70 blog articles, each with three original images.
- Login by Telegram code or by phone and email: a single smart field works out what was typed.
- Payment with an e-signed contract under Russian law FZ-63, receipts under 54-FZ, idempotent webhooks against double crediting.
- A five-level affiliate programme with exact money arithmetic and protection against cycles.
- A Telegram bot with an AI assistant that remembers the conversation, with the whole thread visible in the client card.
- PageSpeed 98 out of 100 on desktop.
Technology stack
- Frontend: React + Vite (SPA, lazy code-split by route), custom design, fully responsive.
- Backend: Django + REST API + Django Unfold admin.
- Telegram bot: aiogram 3 + asyncpg (connection pool).
- Database: PostgreSQL 14 (shared between the website and the bot).
- Payments: bank payment gateway + idempotent webhooks, tax-compliant electronic receipts.
- AI: OpenAI GPT + Google Gemini / Imagen 4.
- Email: SMTP + Mailgun, DKIM/SPF.
- Infrastructure: nginx, supervisor, Let's Encrypt SSL, Cloudflare, rclone backups to Google Drive, error monitoring (GlitchTip) and uptime tracking (UptimeRobot).
- Integrations: iCloud calendar sync (CalDAV), qualified electronic signature.
How it started
The coach had an audience, a programme of 21 trainings and nowhere for all of it to live together. Sign-ups happened in messengers, payments were collected by hand and affiliate commissions were counted in a spreadsheet.
The brief was straightforward: build a system where a person finds the training themselves, pays for it while signing the contract, sees their own progress and rank, and where the centre’s team sees each client in full, including their conversation with the bot.
Money was the separate difficulty. A five-level programme means one purchase triggers a chain of credits, and a rounding slip or a repeated webhook from the bank breaks the balance. So the money arithmetic runs on exact decimals and atomic operations, and the webhooks are idempotent: a second call credits nothing twice.
Full list of implemented features
🌐 Website and pages
- Home page with rotating hero photos and a shimmer pre-loader
- Events programme with filters and drag-scroll
- A catalogue of 21 trainings, with a dedicated page for each (/training/<slug>)
- Blog with articles, videos and filters across 7 categories
- "About Yana" page (timeline, methodology, statistics, corporate clients)
- Individual coaching with a booking form
- A hub of 11 interactive practices (flash cards, breathing, MAC cards, grounding) with progress stored in localStorage
- CTA after each practice → matching training (practice-to-training mapping)
- "Documents" section — 7 legal documents (~110,000 characters)
- Contacts and a 404 page with auto-search
- Full mobile adaptation, mobile TabBar, lazy loading, ScrollToTop
🔐 Authentication
- Sign-up and login via Telegram OTP (code delivered into the bot)
- Login by phone OR email + password (a single smart field that auto-detects the format)
- Country picker for the phone number (a lightweight in-house selector)
- Password set / change, password recovery by email
- Bot account linked to the Django user
👤 User dashboard
- Profile (name, phone, email, city, date of birth)
- A 7-tier loyalty rank with a progress bar
- A checklist of 21 programmes (what is taken / what is available)
- Order history, cancellation of an unpaid order
- L1–L5 affiliate tree and a referral link
- Sticky tab navigation, jump to the admin for staff members
- Notifications (Telegram + email)
💳 Payments and affiliate programme (MLM)
- Online payments through a bank gateway, success / failure pages
- Idempotent webhooks (protect against double crediting)
- MLM down to 5 levels, Decimal-precise maths, self-referral and cycle protection
- Order deduplication, tax-compliant receipt, "thank you for your purchase" email
- Qualified e-signature of the offer on the website and inside the bot + document hash and full-text archive
- Prices from a single source of truth (TrainingCatalog)
- Affiliate payouts: partner request + admin-initiated, receipt confirmation, balance debit
🤖 Telegram bot @SilaSoznaniyaYT_Bot
- AI assistant (GPT / Gemini) with conversation memory and logging
- Training menu with a category tree, schedule by months
- Materials library (a button leads to the article on the website)
- Profile, referral link + QR, affiliate section with history and statements
- Promo codes, payments with e-signature directly inside the bot
- Scheduler: nightly import, deactivation, push reminders before a programme starts
- Fail-fast environment checks, admin alerts on failures
🛠 Admin (Django Unfold, CRM)
- Event calendar (FullCalendar), inline price editing in a table
- Register of electronic signatures
- Custom pages: Finance, Loyalty, Affiliates, a stats dashboard, a visual affiliate tree
- Customer card: bonuses, ban / unban / freeze, notes, favourites, view of the AI-assistant conversation, direct message, affiliate network
- Bulk actions: Telegram broadcast, Excel export, staff assignment, re-engagement, rank changes
- Manual order creation, announcement page with segment selection
- Quick affiliate toggle in the user list
🧠 AI infrastructure
- Log of every AI request, model settings
- RAG knowledge base (AISmartContent)
- Sentiment and topic analysis of conversations, customer fact extraction (name, city, interests)
- AI-powered meaning expansion in search
📝 Content engine
- A single Article model: one publication = website + bot (dual content)
- 70 real articles (7 clusters × 10), all with images
- Automatic image generation via Gemini Flash + Imagen 4 (banks of 210 archetypes, 3 unique images per article)
- Markdown, video (YouTube / RuTube / Vimeo), auto-previews in 3 sizes
- A management command to publish articles
🔎 Search
- Full-text search (PostgreSQL tsvector) across articles and events
- A static index across the 21 trainings and 12 pages
- AI fallback (Gemini) when there are zero results
- Search modal: Cmd+K, arrow-key navigation, debounce, match highlighting; a search icon on desktop, a FAB on mobile
🔍 SEO / GEO / AEO
- Sitemap.xml + robots.txt, canonical + hreflang
- Schema.org markup: EducationalOrganization, Course, BlogPosting, FAQPage, BreadcrumbList
- OG / Twitter meta tags, server prerender of blog posts so sharing previews look correct
- Web analytics, AI Overviews readiness, llms.txt / llms-full.txt
- A service with two backends (SMTP + Mailgun), DKIM / SPF
- Emails: order confirmation, welcome, password recovery, affiliate bonus
- Segmented event announcements (partners / past buyers / new) sent in daytime batches
- Newsletter unsubscribe (working opt-out)
📅 Calendar
- An iCal feed for subscribing in any calendar app
- iCloud calendar sync (CalDAV) — event dates are pulled in automatically
⚡ Performance
- Click-to-play video (facade: the player loads only on click, −~480 KB JS)
- Self-hosted font (render-blocking Google Fonts removed) + preload
- Static pre-compression (gzip_static), cache headers, WebP images + mobile variants
- Home page prerender (LCP poster) with an instant fallback through nginx
- Result: desktop 98/100 PageSpeed
🛡 Security and reliability
- Payment idempotency, money arithmetic safety (Decimal + atomic operations)
- SQL injection protection, escaping of user input
- CSP and security headers, API rate-limiting (anti-DDoS), Cloudflare
- Database backups on Google Drive, error monitoring (GlitchTip) and uptime (UptimeRobot)
📦 Infrastructure / DevOps
- Monorepo, supervisor (web + bot), nginx, SSL with auto-renewal
- One-step backend / frontend deploy scripts
- 35+ database migrations, an egress proxy for outbound requests to Telegram / AI APIs, backups
Results
| Metric | Value |
|---|---|
| Trainings in the catalogue | 21 |
| Blog articles | 70, three images each |
| Interactive practices | 11 |
| Affiliate programme levels | 5 |
| Loyalty ranks | 7 |
| Legal documents | 7, around 110,000 characters |
| Desktop PageSpeed | 98 out of 100 |
| JS saved by deferred video | about 480 KB |

