<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>LearnFlow Documentation Blog</title>
        <link>https://learnflow-docs.example.com/blog</link>
        <description>LearnFlow Documentation Blog</description>
        <lastBuildDate>Sun, 01 Feb 2026 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <item>
            <title><![CDATA[LearnFlow Architecture Deep Dive]]></title>
            <link>https://learnflow-docs.example.com/blog/architecture-deep-dive</link>
            <guid>https://learnflow-docs.example.com/blog/architecture-deep-dive</guid>
            <pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[LearnFlow uses a modern, dual-database architecture that leverages the strengths of both SQL and NoSQL databases. In this post, we'll explore the technical decisions behind our architecture.]]></description>
            <content:encoded><![CDATA[<p>LearnFlow uses a modern, dual-database architecture that leverages the strengths of both SQL and NoSQL databases. In this post, we'll explore the technical decisions behind our architecture.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="why-dual-database-architecture">Why Dual Database Architecture?<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#why-dual-database-architecture" class="hash-link" aria-label="Direct link to Why Dual Database Architecture?" title="Direct link to Why Dual Database Architecture?" translate="no">​</a></h2>
<p>LearnFlow uses both PostgreSQL and MongoDB to optimize for different data access patterns:</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="postgresql-relational---structured-data">PostgreSQL (Relational) - Structured Data<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#postgresql-relational---structured-data" class="hash-link" aria-label="Direct link to PostgreSQL (Relational) - Structured Data" title="Direct link to PostgreSQL (Relational) - Structured Data" translate="no">​</a></h3>
<p><strong>Use Cases:</strong></p>
<ul>
<li class="">User accounts and authentication</li>
<li class="">Course metadata</li>
<li class="">Enrollments</li>
<li class="">Audit logs</li>
<li class="">Discussion comments</li>
</ul>
<p><strong>Rationale:</strong></p>
<ul>
<li class=""><strong>ACID Compliance</strong>: Critical for financial and user data</li>
<li class=""><strong>Structured Relationships</strong>: Users → Courses → Enrollments</li>
<li class=""><strong>Query Flexibility</strong>: Complex joins for analytics</li>
<li class=""><strong>Maturity</strong>: Battle-tested for production systems</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="mongodb-nosql---flexible-content">MongoDB (NoSQL) - Flexible Content<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#mongodb-nosql---flexible-content" class="hash-link" aria-label="Direct link to MongoDB (NoSQL) - Flexible Content" title="Direct link to MongoDB (NoSQL) - Flexible Content" translate="no">​</a></h3>
<p><strong>Use Cases:</strong></p>
<ul>
<li class="">Course lessons (varying structures)</li>
<li class="">User progress (variable per user)</li>
<li class="">Rich content with different schemas</li>
</ul>
<p><strong>Rationale:</strong></p>
<ul>
<li class=""><strong>Flexible Schema</strong>: Lessons can have different content types</li>
<li class=""><strong>Scalability</strong>: Handle growing content libraries</li>
<li class=""><strong>Document Model</strong>: Natural fit for lesson-progress relationships</li>
<li class=""><strong>Rapid Development</strong>: Easy schema evolution</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="frontend-architecture">Frontend Architecture<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#frontend-architecture" class="hash-link" aria-label="Direct link to Frontend Architecture" title="Direct link to Frontend Architecture" translate="no">​</a></h2>
<p>Our frontend is built with:</p>
<ul>
<li class=""><strong>React 19</strong>: Modern UI component library with hooks</li>
<li class=""><strong>Vite</strong>: Fast build tool and development server</li>
<li class=""><strong>React Router</strong>: Client-side routing</li>
<li class=""><strong>Tailwind CSS</strong>: Utility-first CSS framework</li>
<li class=""><strong>Framer Motion</strong>: Animations and transitions</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-frontend-patterns">Key Frontend Patterns<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#key-frontend-patterns" class="hash-link" aria-label="Direct link to Key Frontend Patterns" title="Direct link to Key Frontend Patterns" translate="no">​</a></h3>
<ol>
<li class=""><strong>Context API</strong>: Used for global state management (Auth, Theme)</li>
<li class=""><strong>Protected Routes</strong>: Role-based route protection</li>
<li class=""><strong>Service Layer</strong>: Centralized API calls</li>
<li class=""><strong>Component Composition</strong>: Reusable, composable components</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="backend-architecture">Backend Architecture<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#backend-architecture" class="hash-link" aria-label="Direct link to Backend Architecture" title="Direct link to Backend Architecture" translate="no">​</a></h2>
<p>Our backend is built with:</p>
<ul>
<li class=""><strong>FastAPI</strong>: Modern Python web framework</li>
<li class=""><strong>SQLAlchemy</strong>: SQL ORM toolkit</li>
<li class=""><strong>JWT</strong>: Token-based authentication</li>
<li class=""><strong>bcrypt</strong>: Password hashing</li>
<li class=""><strong>slowapi</strong>: Rate limiting</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-backend-patterns">Key Backend Patterns<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#key-backend-patterns" class="hash-link" aria-label="Direct link to Key Backend Patterns" title="Direct link to Key Backend Patterns" translate="no">​</a></h3>
<ol>
<li class=""><strong>Dependency Injection</strong>: FastAPI's Depends for database sessions</li>
<li class=""><strong>Pydantic Schemas</strong>: Request/response validation</li>
<li class=""><strong>Middleware</strong>: CORS, rate limiting, error handling</li>
<li class=""><strong>Service Layer</strong>: Separated business logic</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="authentication-flow">Authentication Flow<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#authentication-flow" class="hash-link" aria-label="Direct link to Authentication Flow" title="Direct link to Authentication Flow" translate="no">​</a></h2>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">┌──────────┐      ┌──────────┐      ┌──────────┐</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│  Client  │      │  Backend │      │ Database │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└──────────┘      └──────────┘      └──────────┘</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │ POST /login      │                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │─────────────────&gt;│                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │ Verify password  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │─────────────────&gt;│</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │&lt;─────────────────│</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │ Create JWT token │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │─────────────────&gt;│</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │                  │                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │&lt;─────────────────│                  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     │ JWT token        │                  │</span><br></span></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="design-decisions">Design Decisions<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#design-decisions" class="hash-link" aria-label="Direct link to Design Decisions" title="Direct link to Design Decisions" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="1-fastapi-over-flaskdjango">1. FastAPI over Flask/Django<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#1-fastapi-over-flaskdjango" class="hash-link" aria-label="Direct link to 1. FastAPI over Flask/Django" title="Direct link to 1. FastAPI over Flask/Django" translate="no">​</a></h3>
<p><strong>Decision</strong>: Use FastAPI for the backend.</p>
<p><strong>Rationale</strong>:</p>
<ul>
<li class="">Automatic OpenAPI documentation</li>
<li class="">Native async support for better performance</li>
<li class="">Type validation with Pydantic</li>
<li class="">Modern Python features</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="2-react-with-vite">2. React with Vite<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#2-react-with-vite" class="hash-link" aria-label="Direct link to 2. React with Vite" title="Direct link to 2. React with Vite" translate="no">​</a></h3>
<p><strong>Decision</strong>: Use React 19 with Vite build tool.</p>
<p><strong>Rationale</strong>:</p>
<ul>
<li class="">Fast development server</li>
<li class="">Optimized production builds</li>
<li class="">Large ecosystem</li>
<li class="">Modern hooks API</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="3-jwt-over-sessions">3. JWT over Sessions<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#3-jwt-over-sessions" class="hash-link" aria-label="Direct link to 3. JWT over Sessions" title="Direct link to 3. JWT over Sessions" translate="no">​</a></h3>
<p><strong>Decision</strong>: Stateless JWT authentication.</p>
<p><strong>Rationale</strong>:</p>
<ul>
<li class="">Scalable across multiple servers</li>
<li class="">No session storage needed</li>
<li class="">Mobile-friendly tokens</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="4-dual-database">4. Dual Database<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#4-dual-database" class="hash-link" aria-label="Direct link to 4. Dual Database" title="Direct link to 4. Dual Database" translate="no">​</a></h3>
<p><strong>Decision</strong>: PostgreSQL + MongoDB.</p>
<p><strong>Rationale</strong>:</p>
<ul>
<li class="">PostgreSQL for ACID-critical data (users, payments)</li>
<li class="">MongoDB for flexible content (lessons, progress)</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's Next?<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#whats-next" class="hash-link" aria-label="Direct link to What's Next?" title="Direct link to What's Next?" translate="no">​</a></h2>
<p>We're planning to evolve our architecture with:</p>
<ul>
<li class="">Microservices decomposition</li>
<li class="">Event-driven architecture</li>
<li class="">Advanced caching strategies</li>
<li class="">Real-time features with WebSockets</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="learn-more">Learn More<a href="https://learnflow-docs.example.com/blog/architecture-deep-dive#learn-more" class="hash-link" aria-label="Direct link to Learn More" title="Direct link to Learn More" translate="no">​</a></h2>
<p>Check out our <a class="" href="https://learnflow-docs.example.com/docs/architecture">architecture documentation</a> for more details.</p>]]></content:encoded>
            <category>architecture</category>
            <category>technical</category>
            <category>databases</category>
        </item>
        <item>
            <title><![CDATA[Introducing LearnFlow - A Modern Learning Management System]]></title>
            <link>https://learnflow-docs.example.com/blog/introducing-learnflow</link>
            <guid>https://learnflow-docs.example.com/blog/introducing-learnflow</guid>
            <pubDate>Thu, 15 Jan 2026 00:00:00 GMT</pubDate>
            <description><![CDATA[We're excited to introduce LearnFlow, a modern, full-stack Learning Management System built with React, FastAPI, PostgreSQL, and MongoDB.]]></description>
            <content:encoded><![CDATA[<p>We're excited to introduce <strong>LearnFlow</strong>, a modern, full-stack Learning Management System built with React, FastAPI, PostgreSQL, and MongoDB.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="what-is-learnflow">What is LearnFlow?<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#what-is-learnflow" class="hash-link" aria-label="Direct link to What is LearnFlow?" title="Direct link to What is LearnFlow?" translate="no">​</a></h2>
<p>LearnFlow is a comprehensive Learning Management System that enables administrators to create and manage courses while allowing learners to browse, enroll, and track their progress through lessons.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-features">Key Features<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#key-features" class="hash-link" aria-label="Direct link to Key Features" title="Direct link to Key Features" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="for-learners">For Learners<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#for-learners" class="hash-link" aria-label="Direct link to For Learners" title="Direct link to For Learners" translate="no">​</a></h3>
<ul>
<li class="">📚 Browse and search courses by category and level</li>
<li class="">🎯 Track learning progress with visual indicators</li>
<li class="">📖 Interactive lesson viewer (video and text content)</li>
<li class="">🏆 Course leaderboards</li>
<li class="">💬 Course discussions and Q&amp;A</li>
<li class="">💬 Direct messaging with instructors</li>
<li class="">🌙 Dark/Light theme support</li>
<li class="">📱 Fully responsive design</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="for-administrators">For Administrators<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#for-administrators" class="hash-link" aria-label="Direct link to For Administrators" title="Direct link to For Administrators" translate="no">​</a></h3>
<ul>
<li class="">📊 Comprehensive analytics dashboard</li>
<li class="">📝 Course creation and management</li>
<li class="">📖 Lesson management with multiple content types</li>
<li class="">👥 User management with role-based access</li>
<li class="">📋 Audit logs for security and compliance</li>
<li class="">📈 Platform insights and reporting</li>
<li class="">📅 Activity reports and trends</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="tech-stack">Tech Stack<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#tech-stack" class="hash-link" aria-label="Direct link to Tech Stack" title="Direct link to Tech Stack" translate="no">​</a></h2>
<p>LearnFlow is built with modern technologies:</p>
<ul>
<li class=""><strong>Frontend</strong>: React 19, Vite, Tailwind CSS, Framer Motion</li>
<li class=""><strong>Backend</strong>: FastAPI, SQLAlchemy, JWT Authentication</li>
<li class=""><strong>Databases</strong>: PostgreSQL (relational), MongoDB (NoSQL)</li>
<li class=""><strong>DevOps</strong>: Docker, Docker Compose</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
<p>Get started with LearnFlow in minutes:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Clone the repository</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone </span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">your-repo-url</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> learnflow_app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># Start all services with Docker Compose</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">docker</span><span class="token plain"> compose up </span><span class="token parameter variable" style="color:#36acaa">--build</span><br></span></code></pre></div></div>
<p>The application will be available at:</p>
<ul>
<li class=""><strong>Frontend</strong>: <a href="http://localhost:3000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:3000</a></li>
<li class=""><strong>Backend API</strong>: <a href="http://localhost:8000/" target="_blank" rel="noopener noreferrer" class="">http://localhost:8000</a></li>
<li class=""><strong>API Documentation</strong>: <a href="http://localhost:8000/docs" target="_blank" rel="noopener noreferrer" class="">http://localhost:8000/docs</a></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's Next?<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#whats-next" class="hash-link" aria-label="Direct link to What's Next?" title="Direct link to What's Next?" translate="no">​</a></h2>
<p>We're continuously working to improve LearnFlow. Stay tuned for:</p>
<ul>
<li class="">Mobile application</li>
<li class="">Advanced analytics</li>
<li class="">Integration with third-party services</li>
<li class="">Enhanced collaboration features</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="learn-more">Learn More<a href="https://learnflow-docs.example.com/blog/introducing-learnflow#learn-more" class="hash-link" aria-label="Direct link to Learn More" title="Direct link to Learn More" translate="no">​</a></h2>
<p>Check out our <a class="" href="https://learnflow-docs.example.com/docs/">documentation</a> to learn more about LearnFlow's features and architecture.</p>]]></content:encoded>
            <category>announcement</category>
            <category>lms</category>
            <category>education</category>
        </item>
    </channel>
</rss>