<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Brian</title>
    <description>The latest articles on DEV Community by Brian (@eventideapp).</description>
    <link>https://dev.to/eventideapp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3847291%2F92d8d9f3-5732-4a0e-aed4-b02f64319625.jpg</url>
      <title>DEV Community: Brian</title>
      <link>https://dev.to/eventideapp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/eventideapp"/>
    <language>en</language>
    <item>
      <title>I Shipped My App to Production. An Hour Before Upload, I Realized I Was Wrong About My Own Paywall.</title>
      <dc:creator>Brian</dc:creator>
      <pubDate>Wed, 15 Apr 2026 14:37:21 +0000</pubDate>
      <link>https://dev.to/eventideapp/i-shipped-my-app-to-production-an-hour-before-upload-i-realized-i-was-wrong-about-my-own-paywall-2adm</link>
      <guid>https://dev.to/eventideapp/i-shipped-my-app-to-production-an-hour-before-upload-i-realized-i-was-wrong-about-my-own-paywall-2adm</guid>
      <description>&lt;p&gt;Two days ago I thought I was done.&lt;/p&gt;

&lt;p&gt;My Flutter journaling app, Eventide, was approved for Google Play production. The AAB was built. The store listing was polished. I'd spent 30 days writing code and 5 months refining it. All that was left was clicking "Start rollout."&lt;/p&gt;

&lt;p&gt;Then, an hour before upload, I asked myself a question I probably should have asked weeks ago:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many entries should a user get for free before the paywall shows up?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I had it set to 3.&lt;/p&gt;

&lt;p&gt;That number came from my original spec. I wrote it months ago and never questioned it. Three felt "fair" — enough to try the product, not so much that the free tier eats premium conversions. Clean. Decisive. Done.&lt;/p&gt;

&lt;p&gt;Then I actually looked up the research.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Data That Killed My Plan
&lt;/h2&gt;

&lt;p&gt;I spent 20 minutes searching for paywall best practices for subscription apps in 2026. Here's what I found:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Paywall fatigue starts at ~2 exposures per user.&lt;/strong&gt; After that, click-through drops by -0.40 per additional exposure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;23% of freemium conversions happen 6+ weeks after download.&lt;/strong&gt; These are users who needed time with the product before committing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hard paywalls filter 90% of users before they see the paywall at all&lt;/strong&gt;, which means the "high conversion rates" on hard-paywall apps are measuring survivors, not strategy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wellness apps have the highest trial-to-paid conversion (35%) but the lowest first-renewal retention (30.3%).&lt;/strong&gt; Easy to sign up, hard to keep.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Translation: showing a user the paywall after 3 entries would trigger it before they'd built enough habit to want what's behind it. Most users wouldn't even open the app a second time, let alone value the features I was gating.&lt;/p&gt;

&lt;p&gt;The research was clear. 3 was wrong. I needed 7.&lt;/p&gt;

&lt;p&gt;Seven entries ≈ one week of journaling. By then, a user has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Experienced the AI reflection loop (the hook)&lt;/li&gt;
&lt;li&gt;Started to build data (mood patterns, entries worth searching)&lt;/li&gt;
&lt;li&gt;Opened the app multiple times, creating habit anchors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;That's the natural moment for a paywall. Not day one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I updated one line of code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;_freeEntryLimit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// After — research-backed: 7 entries ≈ 1 week of journaling&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="n"&gt;_freeEntryLimit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Rebuilt the AAB. Uploaded version 15. Shipped.&lt;/p&gt;

&lt;p&gt;An hour later, the production release was live. The next morning — yesterday — the first six people installed Eventide.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Else I Got Wrong on Launch Day
&lt;/h2&gt;

&lt;p&gt;That wasn't the only thing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My X account got suspended two days before launch.&lt;/strong&gt; "Inauthentic behavior." I'd been using Buffer to schedule posts (a legitimate tool), but posting the same type of content multiple days in a row during launch week apparently triggered a spam filter. I appealed. Still waiting.&lt;/p&gt;

&lt;p&gt;Lesson: don't rely on any single channel for launch day, especially platforms you don't own. I recovered by leaning harder on LinkedIn, Instagram, and direct texts to friends. The X account was less than 1% of my planned launch reach. Losing it hurt ego more than outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My notification plugin silently fails on Android 16.&lt;/strong&gt; The user on my Galaxy S24 Ultra (Android 16, API 36) gets a "reminders aren't available on this device" error when they toggle morning reminders. The &lt;code&gt;flutter_local_notifications&lt;/code&gt; package hasn't fully updated for API 36. Most users are on Android 13–15 where it works — but the bug is real and I shipped anyway.&lt;/p&gt;

&lt;p&gt;Lesson: if a feature affects under 1% of users and can be fixed in a point release, don't block launch. Document the issue, prioritize the fix, and keep moving. I tracked it in a known-issues doc before upload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ambient audio doesn't play on one Pixel 9 Pro XL user.&lt;/strong&gt; The breathing exercise audio works. The background ambient music doesn't. Same &lt;code&gt;just_audio&lt;/code&gt; package, different file (9MB MP3 vs 689KB WAV). Haven't isolated the cause yet. Also shipped.&lt;/p&gt;

&lt;p&gt;Three known issues at launch. Zero of them were showstoppers.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Unexpected Part
&lt;/h2&gt;

&lt;p&gt;The thing that surprised me most wasn't any of those.&lt;/p&gt;

&lt;p&gt;It was how much of launch day was &lt;strong&gt;psychological&lt;/strong&gt;, not technical.&lt;/p&gt;

&lt;p&gt;I had decision fatigue by 2 PM. When my store listing needed a short description rewrite, I stared at the field for 10 minutes before doing it. When a tester reported the ambient audio bug, my first instinct was to push launch back a week. When I found the paywall research, I almost ignored it because I'd already decided.&lt;/p&gt;

&lt;p&gt;The discipline of "trust research over instinct when you're tired" is the single most valuable thing I learned today. I have no data to support it. Just one observation from one solo dev who almost shipped a broken paywall configuration because he didn't want to rebuild the AAB one more time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers (First 24 Hours)
&lt;/h2&gt;

&lt;p&gt;Here's exactly what Google Play Console shows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Closed testing (April 8–14):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;38 testers across 3 release iterations (builds 11, 12, and 13)&lt;/li&gt;
&lt;li&gt;32 monthly active users&lt;/li&gt;
&lt;li&gt;0 crashes reported&lt;/li&gt;
&lt;li&gt;Zero showstopper bugs surfaced before production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Production launch (April 14, first 24 hours live):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;6 device acquisitions&lt;/li&gt;
&lt;li&gt;0 crashes&lt;/li&gt;
&lt;li&gt;0 reviews yet&lt;/li&gt;
&lt;li&gt;Production release cleared Google's review in under 48 hours&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Small numbers. I'm fine with that.&lt;/p&gt;

&lt;p&gt;The research I quoted earlier says 23% of conversions happen 6+ weeks after install — which means Day 1 isn't the game. Day 30 is. Day 180 is. Six installs today. Whoever those six people are, they're the first real humans to experience the product I've been thinking about for half a year. That's enough.&lt;/p&gt;

&lt;p&gt;The 38 testers across three build iterations is actually the number I'm proudest of. It means I shipped, broke something, fixed it, shipped again, broke something else, fixed that, and shipped again — instead of pushing version 11 to production and hoping. Closed testing is the cheapest mistake you'll ever make. Use it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Android 16 notification fix&lt;/strong&gt; — priority for v1.1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pixel 9 ambient audio fix&lt;/strong&gt; — same point release&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breathing v2&lt;/strong&gt; — more patterns (4-4-4-4 box breathing, 5-5-7 deep relaxation), sampled audio instead of generated sine waves&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Home screen widget&lt;/strong&gt; — daily inspiration quote, passive re-engagement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;iOS port&lt;/strong&gt; — once Android feedback stabilizes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And I'm going to keep writing about it, because apparently the thing I got most wrong about launch was thinking I was done at the upload.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Other Solo Devs Shipping Soon
&lt;/h2&gt;

&lt;p&gt;The lesson that cost me the least but saved me the most: &lt;strong&gt;look up the research on every decision, even the ones you feel certain about.&lt;/strong&gt; I was most wrong about the things I was most confident in.&lt;/p&gt;

&lt;p&gt;If you've launched recently — what did you get wrong and only realize after shipping? Comments open. Genuinely want to hear it.&lt;/p&gt;




&lt;p&gt;Eventide is a private journal and mood tracker with AI reflections that respond to your actual words, not generic advice. No streaks. No guilt. Free every day on Google Play.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.reflekt.reflekt" rel="noopener noreferrer"&gt;Get Eventide on Google Play →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Find more at &lt;a href="https://reflektapp.net" rel="noopener noreferrer"&gt;reflektapp.net&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>flutter</category>
      <category>mentalhealth</category>
      <category>mobile</category>
    </item>
    <item>
      <title>How I Built a Journal App as a Solo Developer with Flutter + Firebase + Claude AI</title>
      <dc:creator>Brian</dc:creator>
      <pubDate>Sat, 28 Mar 2026 08:49:01 +0000</pubDate>
      <link>https://dev.to/eventideapp/how-i-built-a-journal-app-as-a-solo-developer-with-flutter-firebase-claude-ai-85b</link>
      <guid>https://dev.to/eventideapp/how-i-built-a-journal-app-as-a-solo-developer-with-flutter-firebase-claude-ai-85b</guid>
      <description>&lt;p&gt;Six months ago I was a solo developer with an idea: build a journaling app that uses AI to give people genuine reflections on what they write, not generic motivational quotes, but responses that actually engage with their words.&lt;/p&gt;

&lt;p&gt;Today that app is live on Google Play. It's called &lt;strong&gt;Eventide: Journal &amp;amp; Mood&lt;/strong&gt;, and I built every screen, every animation, every backend function myself. Here's the full technical story, the decisions that worked, the ones I'd reconsider, and what I learned shipping a real product alone.&lt;/p&gt;

&lt;h3&gt;
  
  
  The stack
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Choice&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;Flutter (latest stable)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Language&lt;/td&gt;
&lt;td&gt;Dart, strict null safety&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;State management&lt;/td&gt;
&lt;td&gt;Riverpod + riverpod_generator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Navigation&lt;/td&gt;
&lt;td&gt;go_router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backend&lt;/td&gt;
&lt;td&gt;Firebase (Auth + Firestore + Cloud Functions)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;Anthropic Claude API via Firebase Cloud Functions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscriptions&lt;/td&gt;
&lt;td&gt;RevenueCat SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local storage&lt;/td&gt;
&lt;td&gt;Hive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Charts&lt;/td&gt;
&lt;td&gt;fl_chart&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Design&lt;/td&gt;
&lt;td&gt;Material 3, Google Fonts (Lora + Inter)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Why Flutter
&lt;/h3&gt;

&lt;p&gt;I needed iOS and Android from a single codebase. React Native was the other contender, but Flutter's rendering engine won me over. When you're building something with custom animations (breathing exercises, mood selectors with radial pulse effects, a Year in Pixels grid with 365 tappable squares), having full control over every pixel matters.&lt;/p&gt;

&lt;p&gt;The hot reload cycle is genuinely as good as people say. I could tweak an animation curve, save, and see the result in under a second. For a solo dev iterating on feel and polish, that speed compounds fast.&lt;/p&gt;

&lt;p&gt;The tradeoff: platform-specific plugins can be rough. Speech-to-text, local notifications, and biometric auth all required platform channel debugging that ate more hours than I'd like to admit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Riverpod over Bloc or Provider
&lt;/h3&gt;

&lt;p&gt;I evaluated all three seriously. Provider is simpler but doesn't scale well when you have computed state that depends on multiple sources. Bloc is powerful but the boilerplate for events and states felt heavy for a solo project where velocity matters.&lt;/p&gt;

&lt;p&gt;Riverpod with code generation hit the sweet spot. Providers are testable, composable, and the &lt;code&gt;ref.watch&lt;/code&gt; pattern makes reactive UI straightforward. My insights screen computes a 30-day rolling mood average, weekly summaries, a Year in Pixels map, and entry mode breakdowns, all derived from a single list of journal entries through chained providers.&lt;/p&gt;

&lt;p&gt;One pattern I landed on: every screen handles three states explicitly. Loading, data, and error. No exceptions. This sounds obvious but it's easy to forget error states when you're moving fast, and users notice.&lt;/p&gt;

&lt;h3&gt;
  
  
  The AI architecture (and why the API key never touches the client)
&lt;/h3&gt;

&lt;p&gt;This was the most important architectural decision in the entire project.&lt;/p&gt;

&lt;p&gt;Eventide uses Anthropic's Claude API to generate reflections on journal entries. The temptation as a solo dev is to call the API directly from the Flutter app. It's faster to implement, fewer moving parts, ship it and move on.&lt;/p&gt;

&lt;p&gt;Do not do this.&lt;/p&gt;

&lt;p&gt;Any API key embedded in a mobile app binary can be extracted. It doesn't matter how you obfuscate it. Someone will decompile your APK, find the key, and either abuse your quota or do something worse. I've seen indie devs get surprise bills in the thousands from this exact mistake.&lt;/p&gt;

&lt;p&gt;Instead, I set up a Firebase Cloud Function as a proxy. The Flutter app calls the Cloud Function (authenticated via Firebase Auth), the Cloud Function reads the Anthropic API key from environment config, calls Claude, and returns the reflection. The key never leaves the server.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Flutter App -&amp;gt; Firebase Auth Token -&amp;gt; Cloud Function -&amp;gt; Claude API -&amp;gt; Response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three callable functions handle the AI layer:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;getAiReflection&lt;/strong&gt; — takes entry text, mood score, and entry mode. Switches the system prompt based on whether it's a full entry or a quick check-in. Full entries get a three-sentence reflection (empathy, pattern recognition, open question). Quick check-ins get one to two sentences max.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;getWeeklyInsights&lt;/strong&gt; — fetches the last seven entries, generates a two-sentence pattern summary, caches it in Firestore for 24 hours so repeat loads don't burn API calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;getDailyPrompt&lt;/strong&gt; — returns a random prompt from a server-side bank of 60 prompts across six categories. No AI call needed, just a JSON lookup.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The system prompts took more iteration than any other part of the project. Early versions produced generic therapy-speak. The final prompts explicitly ban words like "journey," "validate," and "self-care," and instruct the model to mirror the user's emotional register rather than defaulting to cheerful encouragement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Offline-first with Hive
&lt;/h3&gt;

&lt;p&gt;Journal apps have to work offline. People write on planes, in bed at 2 AM with bad signal, in waiting rooms with one bar of service.&lt;/p&gt;

&lt;p&gt;Every journal entry saves to Hive first, then syncs to Firestore when connectivity returns. The sync flag (&lt;code&gt;isSynced&lt;/code&gt;) on each entry tracks what needs uploading. This means the app is fully functional with no internet connection. AI reflections queue for later, but the core writing and mood tracking experience is instant.&lt;/p&gt;

&lt;p&gt;Hive was chosen over SQLite for simplicity. It's a key-value store that handles Dart objects natively with type adapters. For a data model as simple as journal entries, it's more than enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  RevenueCat for subscriptions
&lt;/h3&gt;

&lt;p&gt;Implementing in-app subscriptions from scratch across both platforms is a notorious time sink. RevenueCat abstracts the store-specific APIs into a single SDK. I defined two products: monthly at $4.99 and annual at $29.99, both with a three-day free trial.&lt;/p&gt;

&lt;p&gt;The free tier gives users three journal entries with AI reflections. After that, the paywall appears with a blurred preview of premium features (insights, Year in Pixels, weekly summaries). The blur is intentional. People need to see what they're missing, not just be told about it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lessons from shipping solo
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Scope is everything.&lt;/strong&gt; My original feature list was twice as long. I cut printed book export, multiplayer shared journals, and three other features that sounded great but would have delayed launch by months. Ship the core, iterate from feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Design polish is not optional.&lt;/strong&gt; Users judge apps in the first five seconds. I spent meaningful time on the onboarding flow, the animated lotus logo, the glassmorphic card effects, and the completion celebration screen. These don't affect functionality. They absolutely affect whether someone keeps the app installed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test on real devices early.&lt;/strong&gt; The speech-to-text feature worked perfectly in the emulator and crashed on three different Android phones. Platform channel issues are real and you won't find them in simulation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your build environment will fight you.&lt;/strong&gt; My project path had spaces in it, which broke a native build hook. I ended up using &lt;code&gt;subst&lt;/code&gt; drives on Windows to work around it. Embarrassing but true.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;The app is in closed testing on Google Play now. Firebase Auth and Firestore sync are being wired up to replace the local stubs. The Cloud Functions are deployed and tested, just waiting to be called from the client.&lt;/p&gt;

&lt;p&gt;If you're a solo dev considering a similar project, my honest advice: pick a stack you can debug alone at midnight, design for offline from day one, and never put an API key in your client code.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Eventide: Journal &amp;amp; Mood&lt;/strong&gt; is live on Google Play.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.reflekt.reflekt" rel="noopener noreferrer"&gt;Download on Google Play&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out the landing page at &lt;a href="https://reflektapp.net" rel="noopener noreferrer"&gt;reflektapp.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear from other indie devs building in this space. Find me in the comments or on the site.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>firebase</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
