<?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>Forem: Tessa Mero</title>
    <description>The latest articles on Forem by Tessa Mero (@tessamero).</description>
    <link>https://forem.com/tessamero</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%2F136630%2F43cb21ef-7cf6-403c-bbc6-c9d2f3bdf09e.jpg</url>
      <title>Forem: Tessa Mero</title>
      <link>https://forem.com/tessamero</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/tessamero"/>
    <language>en</language>
    <item>
      <title>From student to developer - How open source can launch your career</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Wed, 05 Nov 2025 21:52:25 +0000</pubDate>
      <link>https://forem.com/tessamero/from-student-to-developer-how-open-source-can-launch-your-career-d2n</link>
      <guid>https://forem.com/tessamero/from-student-to-developer-how-open-source-can-launch-your-career-d2n</guid>
      <description>&lt;p&gt;You might still be a student, still learning, or still wondering where you belong in tech.  &lt;/p&gt;

&lt;p&gt;You scroll through GitHub, see contributors building amazing things, and it feels like they are miles ahead.  &lt;/p&gt;

&lt;p&gt;But here is the truth: &lt;strong&gt;every great developer you admire once made their first pull request too.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
And that first contribution was not their end point. It was their beginning.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Is Hacktoberfest?
&lt;/h1&gt;

&lt;p&gt;Hacktoberfest is a month-long celebration of open source.&lt;br&gt;&lt;br&gt;
Each October, developers from all over the world make their first contributions, fixing bugs, improving documentation, or adding new features to projects that anyone can use.  &lt;/p&gt;

&lt;p&gt;For many, it is their first step into real-world collaboration.&lt;br&gt;&lt;br&gt;
It is how they gain hands-on experience, connect with other developers, and start building the foundation of their careers.  &lt;/p&gt;

&lt;p&gt;But whether you joined Hacktoberfest or contributed to an open source project on your own, the message is the same:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;you have already started your journey.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  This is the start of your story
&lt;/h1&gt;

&lt;p&gt;Your first pull request, no matter how small, proves something powerful.&lt;br&gt;&lt;br&gt;
You can collaborate, communicate, and contribute to something bigger than yourself.&lt;/p&gt;

&lt;p&gt;My story started with open source back in 2011-2012, where I joined a community and helped out in different areas. This has led me to endless opportunities and helped me land jobs.&lt;/p&gt;

&lt;p&gt;That is what open source really gives you:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real-world teamwork in global, asynchronous environments
&lt;/li&gt;
&lt;li&gt;Peer reviews and mentorship from experienced engineers
&lt;/li&gt;
&lt;li&gt;Communication practice through documentation and issue discussions
&lt;/li&gt;
&lt;li&gt;A public record of your progress and growth
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every contribution, even one, builds credibility. It is your foundation.&lt;/p&gt;

&lt;p&gt;The practice of collaboration with global teams in open source helped me with personal growth and improved my communication skills that prepared me for professional careers. Without open source, I don't know where I'd be now.&lt;/p&gt;

&lt;h1&gt;
  
  
  Quality &amp;gt; Quantity
&lt;/h1&gt;

&lt;p&gt;As someone who has interviewed developers, I do not care how many PRs you have made. I care about &lt;em&gt;what they show.&lt;/em&gt;  &lt;/p&gt;

&lt;p&gt;One thoughtful, well-written contribution tells me:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You understand the project context
&lt;/li&gt;
&lt;li&gt;You respect guidelines and feedback
&lt;/li&gt;
&lt;li&gt;You collaborate professionally in reviews
&lt;/li&gt;
&lt;li&gt;You care about the craft of software
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI tools can assist you, but your thought process, curiosity, and voice are what make your work stand out.  Don't get me wrong, AI is a HUGE help and can write better code than experienced engineers. But make sure you understand what it's doing.&lt;br&gt;
&lt;strong&gt;That is what employers notice.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Your GitHub is your portfolio
&lt;/h1&gt;

&lt;p&gt;Do not just treat GitHub as a storage space. It is your portfolio.&lt;br&gt;&lt;br&gt;
Curate it like one.  &lt;/p&gt;

&lt;p&gt;Add open source work to your resume or LinkedIn profile.&lt;br&gt;&lt;br&gt;
Be specific:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Improved database query efficiency by 30% through indexing optimization.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A clean, consistent GitHub profile says more about your skills than any list of buzzwords.&lt;br&gt;&lt;br&gt;
Visibility matters. Your next opportunity might begin with someone reviewing your code.&lt;/p&gt;

&lt;h1&gt;
  
  
  Learn and build in public
&lt;/h1&gt;

&lt;p&gt;Share your journey online, not just your wins but what you learned.&lt;br&gt;&lt;br&gt;
Even a simple post like:  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I just merged my first pull request! Here is what I learned about React hooks.  &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is not self-promotion. It is reflection.&lt;br&gt;&lt;br&gt;
It helps others who are starting out feel less alone, and it helps future employers see your growth mindset.&lt;/p&gt;

&lt;h1&gt;
  
  
  Grow beyond code
&lt;/h1&gt;

&lt;p&gt;Writing great code is important, but so is helping others write theirs.&lt;br&gt;&lt;br&gt;
Try:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reviewing pull requests from new contributors
&lt;/li&gt;
&lt;li&gt;Writing documentation or tutorials
&lt;/li&gt;
&lt;li&gt;Answering questions in community chats
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are leadership skills in disguise.&lt;br&gt;&lt;br&gt;
And the same qualities that make someone a great open source contributor, empathy, clarity, and initiative, make them a great teammate too.&lt;/p&gt;

&lt;h1&gt;
  
  
  Keep going
&lt;/h1&gt;

&lt;p&gt;Whether you joined Hacktoberfest or just submitted your first contribution this week, do not stop now.  &lt;/p&gt;

&lt;p&gt;Your journey has already begun.&lt;br&gt;&lt;br&gt;
Keep showing up. Keep learning. Keep building.  &lt;/p&gt;

&lt;p&gt;Because open source is not just about code. It is about people, opportunity, and growth.&lt;br&gt;&lt;br&gt;
And the next great creator, maintainer, or innovator might be &lt;strong&gt;you.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Watch my talk
&lt;/h1&gt;

&lt;p&gt;If you want to go deeper into this topic, you can watch the Hacktoberfest Closing Ceremony talk where I also share my journey, &lt;strong&gt;“How Open Source Can Help You Build Your Career,”&lt;/strong&gt; here:&lt;br&gt;&lt;br&gt;
🎥 &lt;a href="https://www.youtube.com/watch?v=_5EN8hHVRvQ" rel="noopener noreferrer"&gt;Watch on YouTube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The future of coding: Cursor, AI, and the rise of backend automation with Appwrite</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Wed, 05 Nov 2025 21:49:47 +0000</pubDate>
      <link>https://forem.com/tessamero/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite-14ic</link>
      <guid>https://forem.com/tessamero/the-future-of-coding-cursor-ai-and-the-rise-of-backend-automation-with-appwrite-14ic</guid>
      <description>&lt;p&gt;The way we build software is evolving quickly. AI-driven tools like Cursor are changing how developers write code, while backend platforms like Appwrite are changing how infrastructure is managed. Together, they are shaping a new era of development focused on automation, speed, and intelligence.&lt;/p&gt;

&lt;p&gt;In this new ecosystem, Model Context Protocol (MCP) servers act as the missing bridge between these tools, allowing editors like Cursor to talk directly to platforms such as Appwrite.&lt;/p&gt;

&lt;h1&gt;
  
  
  Cursor: Coding With Context and AI
&lt;/h1&gt;

&lt;p&gt;Cursor is often described as “the best way to code with AI.” (&lt;a href="https://cursor.com" rel="noopener noreferrer"&gt;cursor.com&lt;/a&gt;) It combines the familiarity of a code editor with the intelligence of an AI pair programmer. As Datacamp explains:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cursor takes this a step further by directly integrating with the code editor, eliminating the need to switch between the editor and a chat interface. &lt;br&gt;
— &lt;a href="https://www.datacamp.com/tutorial/cursor-ai-code-editor" rel="noopener noreferrer"&gt;Datacamp&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With Cursor, developers can describe what they want instead of typing every line manually. Prompts like &lt;em&gt;“Create a REST API for user authentication”&lt;/em&gt; or &lt;em&gt;“Add a search feature with pagination”&lt;/em&gt; can generate entire code scaffolds.&lt;/p&gt;

&lt;p&gt;But while Cursor accelerates frontend and logic creation, developers still need a reliable backend to store data, manage users, and host their apps. That is where Appwrite and the MCP connection come in.&lt;/p&gt;

&lt;h1&gt;
  
  
  Appwrite: Backend Automation Made Simple
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://appwrite.io" rel="noopener noreferrer"&gt;Appwrite&lt;/a&gt; is an open-source platform that simplifies backend setup by providing authentication, databases, storage, functions, and hosting all in one place.&lt;/p&gt;

&lt;p&gt;Appwrite’s philosophy aligns perfectly with the automation movement. It allows developers to focus on building their ideas instead of wiring infrastructure.&lt;/p&gt;

&lt;h1&gt;
  
  
  MCP: The Bridge Between AI Editors and Backends
&lt;/h1&gt;

&lt;p&gt;Until recently, connecting AI-powered editors like Cursor to backend services required manual configuration or custom API work. The &lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; changes that.&lt;/p&gt;

&lt;p&gt;MCP is an open standard that allows editors, agents, and other developer tools to securely communicate with external services. Appwrite’s MCP server enables direct interaction with your backend right inside Cursor.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The Appwrite MCP server allows you to connect LLMs and tools like Claude Desktop, Cursor, Windsurf etc. to your Appwrite project and interact with the API using natural language."&lt;br&gt;&lt;br&gt;
— &lt;a href="https://appwrite.io/docs/tooling/mcp/cursor" rel="noopener noreferrer"&gt;Appwrite MCP Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This means you can use plain English in your editor to create or modify backend resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Create a new Appwrite project.”&lt;/li&gt;
&lt;li&gt;“Add a database collection for products.”&lt;/li&gt;
&lt;li&gt;“Generate a function to handle user registration.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this happens without leaving Cursor. The MCP layer handles the communication between your editor and Appwrite's API securely and consistently.&lt;/p&gt;

&lt;p&gt;MCP is a quiet but powerful innovation. It transforms how developers connect tools, eliminating friction between code editors, APIs, and backend platforms. Instead of writing connectors or managing tokens manually, developers simply &lt;em&gt;talk&lt;/em&gt; to their backend.&lt;/p&gt;

&lt;h1&gt;
  
  
  A Unified Development Flow
&lt;/h1&gt;

&lt;p&gt;With Cursor, Appwrite, and MCP working together, the development process becomes seamless:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; generates code and handles logic through AI-powered prompts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP&lt;/strong&gt; acts as the translator, letting Cursor communicate with Appwrite's backend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Appwrite&lt;/strong&gt; provides instant backend infrastructure without manual setup&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's how it works in practice: You describe your app idea to Cursor, which generates the frontend code. Meanwhile, through MCP, Cursor automatically creates the necessary Appwrite databases, sets up authentication, and configures storage—all through conversation. What used to take hours of configuration now happens in minutes.&lt;/p&gt;

&lt;h1&gt;
  
  
  Real-World Impact
&lt;/h1&gt;

&lt;p&gt;This combination delivers tangible benefits:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed&lt;/strong&gt;: What once required hours of backend setup can now be accomplished in minutes. Instead of configuring databases, writing API endpoints, and setting up authentication separately, developers describe their needs and watch the pieces come together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reduced Complexity&lt;/strong&gt;: No more context-switching between documentation, API references, and your code editor. Everything happens in one place, with AI understanding the full context of your project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lower Barrier to Entry&lt;/strong&gt;: New developers can build production-ready apps without deep backend expertise. The AI handles the technical details while developers focus on solving problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seamless Integration&lt;/strong&gt;: MCP ensures that frontend code generated by Cursor automatically works with Appwrite's backend, reducing integration bugs and compatibility issues.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Path Forward
&lt;/h1&gt;

&lt;p&gt;We're witnessing a fundamental shift in how software gets built. Tools like Cursor make coding more accessible, while platforms like Appwrite eliminate infrastructure complexity. MCP connects these worlds, creating a development experience where ideas flow directly into working applications.&lt;/p&gt;

&lt;p&gt;This isn't just about faster development—it's about removing friction between thinking and building. Developers can experiment more freely, iterate faster, and focus on what matters: solving real problems for real users.&lt;/p&gt;

&lt;p&gt;Ready to experience this workflow yourself? &lt;a href="https://appwrite.io/docs/tooling/mcp/cursor" rel="noopener noreferrer"&gt;Set up the Appwrite MCP server in Cursor&lt;/a&gt; and start building your next project with AI-powered backend automation.&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>ai</category>
      <category>backend</category>
    </item>
    <item>
      <title>Build a fullstack Notes app with Cursor, Appwrite, and TanStack Start</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Wed, 05 Nov 2025 14:51:05 +0000</pubDate>
      <link>https://forem.com/tessamero/build-a-fullstack-notes-app-with-cursor-appwrite-and-tanstack-start-33eh</link>
      <guid>https://forem.com/tessamero/build-a-fullstack-notes-app-with-cursor-appwrite-and-tanstack-start-33eh</guid>
      <description>&lt;h2&gt;
  
  
  Build a fullstack Notes app with Cursor, Appwrite, and TanStack Start
&lt;/h2&gt;

&lt;p&gt;Developers are entering a new era where AI can &lt;em&gt;understand context and build with you&lt;/em&gt;.&lt;br&gt;&lt;br&gt;
AI-powered editors like &lt;strong&gt;Cursor&lt;/strong&gt; blur the line between development and automation, while &lt;strong&gt;Appwrite&lt;/strong&gt; provides the unified backend that turns those AI-generated ideas into production-ready applications.&lt;/p&gt;

&lt;p&gt;Together, they represent the next leap forward, where AI helps you go from idea → API → local app in minutes.&lt;/p&gt;

&lt;p&gt;I chose to use Cursor as it's my &lt;em&gt;favorite&lt;/em&gt; coding agent. We all have our favorite, and I'll definitely keep building with Cursor as it's just more user friendly.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect Cursor to Appwrite using &lt;strong&gt;MCP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Build a &lt;strong&gt;TanStack Start&lt;/strong&gt; app with authentication and CRUD&lt;/li&gt;
&lt;li&gt;Run it locally&lt;/li&gt;
&lt;/ul&gt;


&lt;h1&gt;
  
  
  What is MCP and why it matters
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt; lets AI tools like Cursor securely connect to APIs and databases.&lt;br&gt;&lt;br&gt;
The &lt;strong&gt;Appwrite MCP server&lt;/strong&gt; gives Cursor access to your Appwrite project so it can create collections, write code, and query real data.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://appwrite.io/docs/tooling/mcp/cursor" rel="noopener noreferrer"&gt;&lt;strong&gt;Add Appwrite MCP to Cursor&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Setting up the Appwrite MCP Server
&lt;/h1&gt;
&lt;h2&gt;
  
  
  1. Create an API Key in Appwrite Cloud
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Log in to &lt;a href="https://cloud.appwrite.io" rel="noopener noreferrer"&gt;Appwrite Cloud&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;new API key&lt;/strong&gt; with &lt;strong&gt;all scopes&lt;/strong&gt; (for setup) or select specified scopes.&lt;/li&gt;
&lt;li&gt;Copy the key.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  2. Copy your Project ID
&lt;/h2&gt;

&lt;p&gt;Go to &lt;strong&gt;Project → Overview&lt;/strong&gt;, hover over &lt;strong&gt;Project ID&lt;/strong&gt;, and copy it.&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Add the MCP Server in Cursor
&lt;/h2&gt;

&lt;p&gt;In Cursor → &lt;strong&gt;Tools → Installed MCP Servers → Add Custom MCP&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/cursor-mcp-settings.PNG" class="article-body-image-wrapper"&gt;&lt;img src="/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/cursor-mcp-settings.PNG" alt="Cursor MCP Settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can specify specific routes instead of choosing --all, such as --databases, --users, --functions since having too many may degrade performance in Cursor.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;appwrite&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Command&lt;/td&gt;
&lt;td&gt;&lt;code&gt;uvx mcp-server-appwrite --all&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APPWRITE_ENDPOINT&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://[REGION].cloud.appwrite.io/v1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APPWRITE_PROJECT_ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;YOUR_PROJECT_ID&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APPWRITE_API_KEY&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;YOUR_API_KEY&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Make sure you update your region, project ID, and API key, which is all found in your Appwrite Console.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Install&lt;/strong&gt;, then verify it appears in your MCP list.&lt;/p&gt;


&lt;h1&gt;
  
  
  Troubleshooting MCP
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;uvx not recognized&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Install &lt;strong&gt;uv&lt;/strong&gt;:&lt;br&gt;Windows → `irm &lt;a href="https://astral.sh/uv/install.ps1" rel="noopener noreferrer"&gt;https://astral.sh/uv/install.ps1&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Only “users” endpoint visible&lt;/td&gt;
&lt;td&gt;Use {% raw %}&lt;code&gt;--all&lt;/code&gt; flag or add endpoints manually in config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MCP not found&lt;/td&gt;
&lt;td&gt;Open a &lt;strong&gt;new Cursor conversation&lt;/strong&gt; or restart Cursor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h1&gt;
  
  
  Building the Notes App
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Fully local CRUD app with Appwrite.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/tanstacknotesapp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="/images/blog/build-fullstack-notes-app-cursor-appwrite-tanstack-start/tanstacknotesapp.PNG" alt="TanStack Notes App"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h1&gt;
  
  
  Create a project folder
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;ai-notes &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;ai-notes
cursor &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Remove scaffolded docs + create routes
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; TanStack Start scaffolds a demo/docs route. You'll replace it with real app routes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Remove any TanStack Start demo/docs routes. Replace them with:
- / → Landing page (redirects to /notes if logged in, else /login)
- /login → Login page
- /signup → Signup page
- /notes → Notes app (protected, requires login)
Ensure "/" never shows the TanStack Start docs page.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Scaffold TanStack Start (SSR)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a TanStack Start project named "ai-notes" with TypeScript and SSR. 
Set up a clean src structure with routes, components, and lib folders.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Commands:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm create tanstack@latest
Choose: Start &lt;span class="o"&gt;(&lt;/span&gt;SSR&lt;span class="o"&gt;)&lt;/span&gt;, TypeScript
npm i
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;💡 Cursor may prompt: &lt;code&gt;npm install --save-dev tsx&lt;/code&gt; — that’s expected for SSR dev mode.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Create &lt;code&gt;.env.local&lt;/code&gt; from MCP
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a .env.local file and populate:
VITE_APPWRITE_ENDPOINT and VITE_APPWRITE_PROJECT_ID
Use values from my connected Appwrite MCP server (use regional endpoint with /v1).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VITE_APPWRITE_ENDPOINT=https://nyc.cloud.appwrite.io/v1
VITE_APPWRITE_PROJECT_ID=&amp;lt;YOUR_PROJECT_ID&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart &lt;code&gt;npm run dev&lt;/code&gt; after editing &lt;code&gt;.env.local&lt;/code&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  Configure the Appwrite SDK
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install the Appwrite Web SDK as a normal dependency (not dev).
Create a client helper that reads from VITE_APPWRITE_ENDPOINT and VITE_APPWRITE_PROJECT_ID.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Commands:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i appwrite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Helper:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// src/lib/appwrite.ts&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Databases&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;appwrite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VITE_APPWRITE_ENDPOINT&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setProject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VITE_APPWRITE_PROJECT_ID&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;databases&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Databases&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Create Database &amp;amp; Collection via MCP
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Using the Appwrite MCP server, create a database "main" and a collection "notes" with fields:
title, content, userId, createdAt, updatedAt.
Grant authenticated user read/write and save IDs to src/lib/config.ts.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Add Authentication (session-safe, no auto-login)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create an auth helper with session-safe login/logout:

Requirements:
- login(email, password):
  1. Check if a session exists; if yes, delete all sessions first.
  2. Create a new email/password session.
  3. If "session already active" error occurs, delete all sessions and retry once.
  4. Return the current user via account.get().

- logout(): delete all sessions.

- getCurrentUser(): return account.get(); if unauthenticated, return null.

Update the /login page:
- NEVER auto-redirect away from /login. Always show the form so users can switch accounts.
- On successful login, navigate to /notes.
- Show clear errors if something fails.

Update route guards:
- /notes loader/server check: if no session, redirect to /login.
- / index loader/server check: if session → /notes, else → /login.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Helper (&lt;code&gt;src/lib/auth.ts&lt;/code&gt;):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ID&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;appwrite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setEndpoint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VITE_APPWRITE_ENDPOINT&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setProject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;meta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VITE_APPWRITE_PROJECT_ID&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Account&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getCurrentUser&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;deleteAllSessions&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;deleteSessions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// ignore; we might not have a session&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;deleteAllSessions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createEmailPasswordSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;any&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;?.()&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;session&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;msg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;active&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;deleteAllSessions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createEmailPasswordSession&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;signup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;account&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ID&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;login&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;email&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;logout&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;deleteAllSessions&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Add CRUD for Notes
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a /notes route that lists, creates, updates, and deletes notes using Appwrite Databases API.
Include loading, error, and empty states.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Style and Quality Pass (Tailwind v4, Accessibility)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add Tailwind CSS v4 and basic styling. 
Fix any invalid utilities like focus-visible:ring-opacity-* or custom @apply utilities.
Add accessible focus styles (focus-visible:outline-none focus-visible:ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-blue-500/100).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;Note: You can just add the first part "Add Tailwind CSS v4 and basic styling. I added the 2nd line in the prompt as I had issues with Tailwind utility errors I wasn't familiar with, so this prevents that issue from occurring.&lt;/p&gt;

&lt;h1&gt;
  
  
  Run Locally
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Prompt (Cursor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ensure npm scripts for dev, build, and preview exist.
Run npm run dev first, then npm run build &amp;amp;&amp;amp; npm run preview to verify before deployment.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Commands:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
npm run build
npm run preview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ &lt;strong&gt;Verify routes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/&lt;/code&gt; → redirects to &lt;code&gt;/notes&lt;/code&gt; if logged in, &lt;code&gt;/login&lt;/code&gt; if not
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/login&lt;/code&gt; + &lt;code&gt;/signup&lt;/code&gt; → show correct forms
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/notes&lt;/code&gt; → works only when logged in
&lt;/li&gt;
&lt;li&gt;No TanStack Start docs page appears&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Troubleshooting
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/&lt;/code&gt; shows TanStack docs page&lt;/td&gt;
&lt;td&gt;Delete demo/docs routes and create &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/login&lt;/code&gt;, &lt;code&gt;/signup&lt;/code&gt;, &lt;code&gt;/notes&lt;/code&gt; manually.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;focus-visible-ring&lt;/code&gt; or &lt;code&gt;ring-opacity-*&lt;/code&gt; errors&lt;/td&gt;
&lt;td&gt;Tailwind v4 removed those utilities — use color/alpha rings instead.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Missing &lt;code&gt;.env&lt;/code&gt; file&lt;/td&gt;
&lt;td&gt;Create &lt;code&gt;.env.local&lt;/code&gt; using values from Appwrite MCP.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;401/403 errors&lt;/td&gt;
&lt;td&gt;Verify API key scopes + collection permissions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Creation of a session is prohibited when a session is active."&lt;/td&gt;
&lt;td&gt;Use session-safe login flow. Delete all sessions first, retry once if needed, and remove auto-login logic from &lt;code&gt;/login&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Still having issues?
&lt;/h1&gt;

&lt;p&gt;Everyone has a different experience going through a tutorial. Luckily, with using Cursor, you can enter any errors or problems you are having, and it should fix it and adjust your code as needed.&lt;/p&gt;

&lt;h1&gt;
  
  
  Master Prompt List
&lt;/h1&gt;

&lt;p&gt;1️⃣ &lt;strong&gt;Scaffold app&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a TanStack Start project named "ai-notes" with TypeScript and SSR.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2️⃣ &lt;strong&gt;Fix routes&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Remove scaffolded docs routes. Create "/", "/login", "/signup", "/notes" with redirects using Appwrite Account API.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3️⃣ &lt;strong&gt;Appwrite SDK helper&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install appwrite SDK. Create client helper using VITE_APPWRITE_* envs.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4️⃣ &lt;strong&gt;.env file&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create a .env.local file and populate VITE_APPWRITE_ENDPOINT and VITE_APPWRITE_PROJECT_ID using values from Appwrite MCP.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5️⃣ &lt;strong&gt;Database + Collection&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create database "main" and collection "notes" via MCP with appropriate fields and permissions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6️⃣ &lt;strong&gt;Authentication&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add /login and /signup pages; protect /notes for logged-in users.
Ensure session-safe login logic to prevent duplicate sessions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7️⃣ &lt;strong&gt;CRUD&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Create /notes route with list, create, update, delete using Appwrite Databases API.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;8️⃣ &lt;strong&gt;Polish&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Add types, a11y checks, and Tailwind v4-safe styling.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;9️⃣ &lt;strong&gt;Local test&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Run npm run dev, then npm run build &amp;amp;&amp;amp; npm run preview.
Verify all routes and auth logic.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;If AI can handle the setup, what will you build next?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>tanstack</category>
      <category>cursor</category>
      <category>fullstack</category>
    </item>
    <item>
      <title>Why developers are leaving Next.js for TanStack Start, and loving it</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Tue, 28 Oct 2025 19:59:17 +0000</pubDate>
      <link>https://forem.com/tessamero/why-developers-are-leaving-nextjs-for-tanstack-start-and-loving-it-459a</link>
      <guid>https://forem.com/tessamero/why-developers-are-leaving-nextjs-for-tanstack-start-and-loving-it-459a</guid>
      <description>&lt;h2&gt;
  
  
  Why developers are leaving Next.js for TanStack Start, and loving it
&lt;/h2&gt;

&lt;p&gt;The React world is full of opinions, and every few years a new framework changes how we think about building apps. Next.js has been the default choice for a long time. It offered a clear path to production and made React easier to manage. But recently, more developers have been moving toward &lt;strong&gt;TanStack Start&lt;/strong&gt;, a newer full-stack framework built by the same team behind TanStack Query and TanStack Router.&lt;/p&gt;

&lt;p&gt;They’re not leaving because Next.js is broken. They’re leaving because &lt;strong&gt;TanStack feels lighter, clearer, and closer to plain React,&lt;/strong&gt; and it gives them back control over how things actually work.&lt;/p&gt;

&lt;h3&gt;
  
  
  The growing frustration with Next.js
&lt;/h3&gt;

&lt;p&gt;Many developers used to love Next.js for its simplicity. But as it grew, so did its complexity. The shift to the App Router, the introduction of React Server Components, and constant new patterns have made the framework harder to follow.&lt;/p&gt;

&lt;p&gt;In community discussions, one developer summed it up: &lt;em&gt;“Next.js lost me with the constant changes and complexity. The benefits don’t justify the cognitive overload.”&lt;/em&gt; Others mentioned how debugging has become confusing and how new features often break old patterns.&lt;/p&gt;

&lt;p&gt;Another recurring concern is that &lt;strong&gt;Next.js feels tied to Vercel&lt;/strong&gt;. Many devs appreciate Vercel as a company, but they feel the framework has become more about the platform than the developer. As one user said, &lt;em&gt;“It’s tough to separate Next.js from Vercel. Most advantages people list are actually Vercel features.”&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  TanStack’s foundation of trust
&lt;/h3&gt;

&lt;p&gt;TanStack didn’t appear out of nowhere. It grew from the success of &lt;strong&gt;TanStack Query&lt;/strong&gt; (formerly React Query), a library that completely changed how developers handled state and server data. It replaced complex Redux setups with something that “just made sense.”&lt;/p&gt;

&lt;p&gt;That same idea of &lt;strong&gt;simplicity without shortcuts&lt;/strong&gt; is what’s driving interest in TanStack Start. Developers already trust the TanStack team because their tools consistently solve real problems without hiding what’s going on behind the scenes.&lt;/p&gt;

&lt;p&gt;As one developer put it, &lt;em&gt;“They did for routing and server logic what they already did for state management — made it simple, predictable, and type-safe.”&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What TanStack Start actually is
&lt;/h3&gt;

&lt;p&gt;TanStack Start is a &lt;strong&gt;full-stack React framework&lt;/strong&gt; that builds on TanStack Router, powered by &lt;strong&gt;Vite&lt;/strong&gt; for fast builds and &lt;strong&gt;Vite Env APIs&lt;/strong&gt; for universal deployment. It combines client-side interactivity with server-side rendering, all while keeping things explicit and type-safe.&lt;/p&gt;

&lt;p&gt;Key features developers like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type-safe routing:&lt;/strong&gt; Everything is validated at compile time. If a route or parameter changes, you’ll know immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server functions:&lt;/strong&gt; You can write backend logic (like database queries or API calls) in the same codebase and call it safely from the client.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client-first rendering:&lt;/strong&gt; You get SSR for performance, but navigation feels like a single-page app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Simple deployment:&lt;/strong&gt; Works on Netlify, Cloudflare, Vercel, or your own Node server with minimal setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not trying to reinvent React. It’s giving React a modern backbone that’s easy to understand.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why developers prefer it
&lt;/h3&gt;

&lt;p&gt;Developers in the community consistently mention a few themes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Less magic, more control.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Frameworks like Next.js and Remix rely on “magic” conventions which is behaviors that happen automatically. TanStack Start avoids that. You choose how data loads, where it runs, and what gets rendered.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Feels closer to React.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many devs say that once they start using TanStack Start, they forget they’re even in a framework. It feels like normal React with some helpful extras.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;A smoother developer experience.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Type-safe routes, integrated server functions, and predictable data fetching make debugging faster. One Reddit user said, &lt;em&gt;“When I first tried it, I thought I was missing something because it was so easy — it just worked.”&lt;/em&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Flexible hosting and tooling.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using Vite and Nitro means you can build and deploy anywhere. You’re not locked into one company’s stack or runtime.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Real-world use cases
&lt;/h3&gt;

&lt;p&gt;The developers experimenting with TanStack Start aren’t just building toy projects. They’re using it for &lt;strong&gt;production apps&lt;/strong&gt;, internal dashboards, and even company websites.&lt;/p&gt;

&lt;p&gt;A few examples mentioned in community threads:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;real-time quiz app&lt;/strong&gt; built for an event, where switching from React Router 7 to TanStack Start fixed hydration issues right before launch.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;multi-language analytics dashboard&lt;/strong&gt; powered by Laravel on the backend and TanStack Start on the frontend, praised for its easy SSR setup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Startups and indie projects&lt;/strong&gt; migrating from Next.js because they wanted more predictable code and simpler local hosting options.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many devs say TanStack Start lets them &lt;strong&gt;scale from side projects to production&lt;/strong&gt; without losing control or adding complexity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this shift matters
&lt;/h3&gt;

&lt;p&gt;This shift isn’t just about replacing one framework with another. It reflects a broader change in what developers value.&lt;/p&gt;

&lt;p&gt;For years, frameworks have chased automation and abstractions and trying to do more for the developer. But that often came with confusion, slower builds, and less transparency. TanStack’s approach goes the other way. It gives developers clarity, type safety, and freedom to understand and shape their stack.&lt;/p&gt;

&lt;p&gt;As one developer wrote, &lt;em&gt;“TanStack brings back sanity. It’s a framework that 99% of devs actually want to use.”&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The takeaway
&lt;/h3&gt;

&lt;p&gt;TanStack Start is still young, but it’s already making an impact. Its community is growing quickly, its documentation is improving fast, and it’s backed by a team with a proven record of building tools developers trust.&lt;/p&gt;

&lt;p&gt;Next.js isn’t going anywhere, but developers are looking for something that feels simpler and more honest. TanStack Start gives them that — a framework that’s powerful without being heavy, modern without being controlling, and familiar without being boring.&lt;/p&gt;

&lt;p&gt;If you’ve ever wished React felt like React again, you’ll probably understand why developers are leaving Next.js for TanStack Start, and loving it.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>frameworks</category>
      <category>deployment</category>
      <category>tanstack</category>
    </item>
    <item>
      <title>Appwrite Loves Open Source: Why I Chose to Sponsor Front-End Foxes</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Fri, 16 Sep 2022 19:49:37 +0000</pubDate>
      <link>https://forem.com/appwrite/appwrite-loves-open-source-why-i-chose-to-sponsor-front-end-foxes-111e</link>
      <guid>https://forem.com/appwrite/appwrite-loves-open-source-why-i-chose-to-sponsor-front-end-foxes-111e</guid>
      <description>&lt;p&gt;Open source is at the ❤️ of everything we do at &lt;a href="https://appwrite.io"&gt;Appwrite&lt;/a&gt;, and we want to enable and foster the open-source community that helped us grow to nearly 25,000 stars on &lt;a href="https://github.com/appwrite/appwrite"&gt;GitHub&lt;/a&gt;. Open source projects, though, require a great deal of effort to maintain and grow. We use open-source tools every day to build Appwrite, and we want to help our community. To give back, each Appwrite engineer gets to pick an open-source project for Appwrite to sponsor for one year.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I chose to sponsor Front-End Foxes. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FlwkEaXm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/tessatickle/image/upload/v1663357025/front-endfoxes_a3tnfn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FlwkEaXm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/tessatickle/image/upload/v1663357025/front-endfoxes_a3tnfn.png" alt="a thank you tweet by frontend foxes" width="800" height="545"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First off, what are the Front-End Foxes?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They are an open source organization within the Vuejs community that is built for women and led by women. It’s always free of charge and they help you grow your front-end development skills either in person or by studying in their self-driven classroom setting.&lt;/p&gt;

&lt;p&gt;Their open source repos range from their landing page to their open source school curriculum. You can find their repo here &lt;a href="https://github.com/frontendfoxes/"&gt;https://github.com/frontendfoxes/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes Front-End Foxes stand out?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most memorable conferences I’ve attended, where I shared my experience here, was my very first Vuejs conference in Florida. After getting to know the most vibrant and welcoming open source community, of all communities I’ve been part of and trust me, I have been part of many that made me want to participate more with the Vue community. &lt;/p&gt;

&lt;p&gt;This is where I discovered a conference called &lt;a href="https://connect.tech"&gt;Connect.tech&lt;/a&gt;, the largest multi-framework front-end conference in the US! This is where I signed up for Vuejs workshops that were led by Front-end Foxes. &lt;/p&gt;

&lt;p&gt;I felt very welcomed and learned a lot in such a short period of time. They were inspiring, intelligent, and educational, and I felt they made an impact on my life.&lt;/p&gt;

&lt;p&gt;If they inspired and made an impact on my life, then I know they do the same for many other women in the Vuejs community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn more about Front-End Foxes&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/frontendfoxes"&gt;Blog posts on dev.to&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/frontendfoxes/"&gt;GitHub Repo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;More about Appwrite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We recently became the main sponsor for the entire Vuejs organization and love supporting the community!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n_152zlR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/tessatickle/image/upload/v1663357025/vuejs_nu5e0c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n_152zlR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://res.cloudinary.com/tessatickle/image/upload/v1663357025/vuejs_nu5e0c.png" alt="screenshot of vuejsorg homepage" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Appwrite is an open-source Backend-as-a-Service (BaaS), packaged as a set of Docker micro-services, to give developers of any background the tools necessary to build modern apps quickly and securely.&lt;/p&gt;

&lt;p&gt;Chat with us on Discord, or, Learn more about Appwrite:&lt;br&gt;
Check out Appwrite as the backend for your next &lt;a href="https://appwrite.io/docs/getting-started-for-web"&gt;web&lt;/a&gt;, &lt;a href="https://appwrite.io/docs/getting-started-for-flutter"&gt;Flutter&lt;/a&gt;, or &lt;a href="https://appwrite.io/docs/getting-started-for-server"&gt;server-side&lt;/a&gt; application. Here are some handy links for more information:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/appwrite/appwrite/blob/master/CONTRIBUTING.md"&gt;Appwrite Contribution Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appwrite.io/discord"&gt;Appwrite Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/appwrite/appwrite"&gt;Appwrite Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://appwrite.io/docs"&gt;Appwrite Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>appwrite</category>
      <category>vue</category>
      <category>opensource</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Just hired to Build or Head a Developer Relations Team? Here’s what you should do in your first 90 days!</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Tue, 05 Jul 2022 15:50:38 +0000</pubDate>
      <link>https://forem.com/tessamero/just-hired-to-build-or-head-a-developer-relations-team-heres-what-you-should-do-in-your-first-90-days-47e4</link>
      <guid>https://forem.com/tessamero/just-hired-to-build-or-head-a-developer-relations-team-heres-what-you-should-do-in-your-first-90-days-47e4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developer advocate friends often reach out and say, “Hey, I just got a job leading a DevRel team, and I need to build a strategy. Do you have any good resources, or can we jump on a call?” First off, if you are in your first week or two and are already working on a DevRel strategy, you are probably off to a bad start.&lt;/p&gt;

&lt;p&gt;I started as a developer back in 2011, becoming a developer advocate in 2016. Many of the friends I’ve made throughout this network have grown in their careers during the same time. Most are landing senior, director, head of/VP roles in developer relations, and there aren’t many resources for high-level positions. My inspiration for writing this is to share knowledge from the extensive research and reading I’ve done to start my position as head of developer relations, sharing my successes and what worked. This will help you kickstart your new position leading a team or department.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: Things don't have to be in exact order for time and objectives. Since every company and company size is different, your process for your first 90 days will need to adapt based on that information.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LEARN and BUILD CREDIBILITY&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Week 1 - Week 2&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You need to be in the learning phase during your first couple of weeks. If you are joining the company and there’s an existing developer relations team, meet with all of them first. Meet with everyone you can. If the company is very large, meet with the important individuals that you’ll be working with directly, especially senior leadership and executive team members.&lt;/p&gt;

&lt;p&gt;Conversation structure for an introductory call, which shouldn’t be more than 30 minutes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn about the individual. What is their background? What are their strengths? Learn about their personality type. How best to communicate with them.&lt;/li&gt;
&lt;li&gt;Let them learn about you. This is your chance to build credibility and respect. Explain your background and the value you are excited to provide to the company.&lt;/li&gt;
&lt;li&gt;Keep things personable yet professional and straightforward.&lt;/li&gt;
&lt;li&gt;Learn about what their expectations are of you. Most may not have an answer, but some may have a lot to say off the top of their head!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While you are scheduling calls and learning about the key individuals (or all individuals) you’ll be working closely with, you should be learning other areas as well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your Boss - The person you report to (VP, CEO), learn about their communication style and the best way to communicate with them.
&lt;/li&gt;
&lt;li&gt;Boss Expectations - Make sure you are clear about your boss’s immediate expectations at the beginning. Prioritize that.
&lt;/li&gt;
&lt;li&gt;Culture - Learn about the company culture and what makes the company thrive.
&lt;/li&gt;
&lt;li&gt;Company Mission - What are the overall company objectives, mission, and long-term goals?
&lt;/li&gt;
&lt;li&gt;Productivity Tools and Developer Tools - Learn about all the tools that your team and company use. Get access. Get familiar with them.
&lt;/li&gt;
&lt;li&gt;Community Expectations - What are the expectations with involvement, for example, Discord, Slack, Forums, Twitter, Facebook, etc.
&lt;/li&gt;
&lt;li&gt;Stakeholder Expectations - Understand what key stakeholders and investors expect. How are the stakeholder meetings? Is it monthly? Does the CEO present slides? What kind of information is presented on the slides? Does any of the data correlate with any of your team’s activities? Such as community growth metrics? This is vital information that will ensure the success of your role.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;RESEARCH. LISTEN. UNDERSTAND&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Week 3 - Week 4&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now that you’ve passed the learning stage, it’s time to research more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn about what people love the most about the company. What made them want to join? What areas do people feel need to improve?
&lt;/li&gt;
&lt;li&gt;Existing DevRel team - What areas do they feel they are lacking and need to be improved? Where do they feel they were already doing best before you joined? What are their immediate expectations of you?
&lt;/li&gt;
&lt;li&gt;Existing DevRel team history - Who is responsible for events? Have we sponsored events before? Have we had booths before? Does anyone have experience running booths? The same set of questions should work for different areas, such as  Developer Feedback. Is there a current process? What is done with the feedback? Is there a workflow between DevRel and Engineering/Product? &lt;/li&gt;
&lt;li&gt;What is the current organizational flow? How are teams structured? Is there a marketing team? Is there a Developer Experience team? How are the engineering teams     structured? With smaller startups/organizations, expect your DevRel team to wear multiple hats!&lt;/li&gt;
&lt;li&gt;Company Growth - What is the expected company growth? Are there hiring expectations for DevRel, or is that open for you to create the strategic plan?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Get an early win.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During this timeframe, you should also work on very small initiatives/projects that are a priority to the company. Small as in, something you can accomplish quickly to demonstrate how you deal with decision-making and prove to the company you can execute and follow through.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GET FEEDBACK&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Week 5 - Week 6&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You’ve learned and researched as much as you can. By this time, you should have a good understanding of the expectations everyone you work with has. Next, you will need feedback.&lt;/p&gt;

&lt;p&gt;Imagine working really hard for the next couple of months, putting your heart and soul into all of these initiatives, only to find out they’re not what anyone wanted or expected? The feedback process is what prevents mistakes from happening.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hear from others what they think about your work/progress so far. You will need validation from others if you are meeting their expectations.
By this time, you should also have several plans or ideas. None of the bigger initiatives should be launched, and you should only plan them via content/discussions.
&lt;/li&gt;
&lt;li&gt;You will need as much feedback as possible on your ideas. Your boss as a priority, the DevRel team, if it exists, and other key individuals at the company.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STRATEGY AND PLANNING&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Week 7 - Week 8&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You should have a plan for many different developer relations areas. Keep in mind that most of your strategic planning should tie in with overall company goals.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Awareness/Outreach Strategy (events, social media responses/views/traffic, company mentions on different platforms)
&lt;/li&gt;
&lt;li&gt;Relationship Strategy     (integrations, working with influencers, educational partnerships   for courses, developer feedback, solutions and resolutions from developers, interactions with developers)
&lt;/li&gt;
&lt;li&gt;Developer Experience Strategy, if applicable (developer feedback, product feedback/improvement, improved docs, faster developer onboarding process, etc.)&lt;/li&gt;
&lt;li&gt;Content Strategy, depending on what DevRel is responsible for (new sign-ups/self-service  developers), website traffic KPIs, documentation (and frequently    asked questions) and How-Tos, internal blog posts, external blog posts, partner blog posts for integrations/partnerships, community-contributed content&lt;/li&gt;
&lt;li&gt;Community Strategy - if there is a GitHub repo, how you work with different repos, issues, and GitHub discussions, contributors, contributors that become maintainers,    engagements on StackOverflow/GitHub/social media/Reddit, your high value contributors, overall community growth&lt;/li&gt;
&lt;li&gt;Support Strategy – planning a way to reduce repeated questions in your community
&lt;/li&gt;
&lt;li&gt;KPI Strategy – tracking what’s most important to prove DevRel success over-time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;EXECUTION&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Week 9 - Week 10&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve built your strategic plans in all your DevRel initiatives, you’ll need to go through a feedback process before executing them. Present your plan and make sure there is consensus from your boss, anyone that would be involved in that initiative, and your DevRel team. Give them a chance to give thorough feedback and make another iteration of your plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TEAM FLOW or HIRING STRATEGY&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Week 11 - Week 12&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Existing DevRel Teams: You’ll need to develop a good strategy for the most efficient team flow between all of your developer advocates. Hiring more people very quickly doesn’t always make your team more efficient. Once you have a smooth flow between all team members and work needing to be done, identify areas that are lacking and then determine if more hires or reprioritization of tasks is required. If you plan to hire more individuals, have a clear plan of how they would fit within the current team flow.&lt;br&gt;
No DevRel Team: Develop a hiring strategy. What does the team look like? What region are they in? What skills do these individuals have?  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AFTER/DURING 90 DAYS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn about your team’s long-term goals within the company
&lt;/li&gt;
&lt;li&gt;Deep dive into the product’s architecture and learn the technical side of the product to better connect with developers &lt;/li&gt;
&lt;li&gt;Improve workflows between different teams&lt;/li&gt;
&lt;li&gt;Expand your knowledge by reading books or resources in skills and areas that you need to improve on
CONCLUSION&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the information in this post can also be helpful for non-leadership roles. Make sure that you’re open-minded when you start your first 90 days. What worked in your last few roles may not work for your current company. Don’t be too quick with decision-making and strategic planning early on. You need to spend time to learn, build credibility, research, and understand everything and everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RESOURCES&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/First-90-Days-Strategies-Expanded/dp/1422188612/"&gt;Book, “The First 90 Days”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=aLu3NazBbLw&amp;amp;feature=youtu.be"&gt;YouTube Video, “The First 90 Days”&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=KrqfqyN2FTsA"&gt;DevRel KPIs Workshop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/gp/product/1942788819/"&gt;Team Topologies: Organizing Business and Technology Teams for Fast Flow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devrel</category>
      <category>leadership</category>
    </item>
    <item>
      <title>A New Journey as Head of Developer Relations at Appwrite</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Thu, 21 Apr 2022 19:05:03 +0000</pubDate>
      <link>https://forem.com/tessamero/a-new-journey-as-head-of-developer-relations-at-appwrite-5m1</link>
      <guid>https://forem.com/tessamero/a-new-journey-as-head-of-developer-relations-at-appwrite-5m1</guid>
      <description>&lt;p&gt;Today, I start at &lt;a href="https://appwrite.io"&gt;Appwrite&lt;/a&gt; as &lt;strong&gt;Head of Developer Relations&lt;/strong&gt;, a role tasked with advocating developer success and experience in addition to growing the open-source community. &lt;/p&gt;

&lt;p&gt;After over three years at Cloudinary, which I joined as a senior developer advocate and advanced to be director of developer advocacy, the start of this new adventure is bittersweet. It was hard to walk away from that wonderful company, team, and opportunity. I’ll miss the people I worked with and will for sure keep tabs on what the future holds for Cloudinary.&lt;/p&gt;

&lt;p&gt;I'm so excited to be joining Appwrite. Appwrite’s founder and CEO, Eldad Fux, is a software engineer at heart who has worked closely with developers in the open-source community for years. He aims at making Appwrite a developer-first company and building the best developer experience. This aligns with my values and beliefs of what constitutes successful open-source projects, not to mention my lifelong dream of being part of an up-and-coming startup. Which is why I’m thrilled to be joining the DevRel team, not only to work with very talented individuals, but to scale and grow the team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Appwrite in a nutshell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An Open Source Firebase alternative, Appwrite, was incorporated soon after its &lt;a href="https://appwrite.io/seed"&gt;Seed Round&lt;/a&gt; after September 2021. Appwrite provides developers with all the core APIs required to build any application. Appwrite provides REST and Realtime APIs for Database, Storage, Authentication, and Functions with support for over ten coding languages.&lt;/p&gt;

&lt;p&gt;Key milestones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;As of April 2022, Appwrite’s open-source community, which is the fastest growing project in GitHub’s history,  has almost &lt;strong&gt;21,000 GitHub stars&lt;/strong&gt;, an 840% increase in two years. &lt;/li&gt;
&lt;li&gt;Appwrite has over &lt;strong&gt;150,000 developers&lt;/strong&gt; in their community, along with 550 contributors to their codebase.&lt;/li&gt;
&lt;li&gt;Appwrite now boasts almost &lt;strong&gt;8,300 Discord members&lt;/strong&gt;, all of whom joined in the last two years. &lt;/li&gt;
&lt;li&gt;Appwrite recently announced its Series-A round with plans to expand product development and further support the open-source community.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My open-source roots&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open source is a key part of my "origin story" and my calling. Shortly after joining the tech industry in 2011 as a developer building web applications with open-source tools, I attended my first open-source conference called “Joomla Day NYC” where I met a contributor who invited me to join the team. I learned about testing bug patches and the process of submitting a Pull Request to an open-source project. I also had the opportunity to work with the Extensions Directory team, Production Leadership Team, and the Board of Directors. In addition, I’ve been a bit part of many different open-source developer communities by speaking/attending conferences in PHP, JavaScript, Vue.js, API communities, and too many to count. Since then, I’ve dedicated myself to contributing to and connecting with open-source communities.&lt;/p&gt;

&lt;p&gt;So, the journey begins. Stay tuned for Appwrite’s upcoming initiatives, community announcements, and features. Appwrite will be doing endless impactful and big things, and will be one of the best tech companies ever!&lt;/p&gt;

&lt;p&gt;I look forward to staying in touch and continuing to learn from you all.&lt;/p&gt;

&lt;p&gt;🐦 &lt;a href="https://twitter.com/tessamero"&gt;My feed on Twitter&lt;/a&gt; 💜&lt;br&gt;
🐦 &lt;a href="https://twitter.com/appwrite"&gt;Appwrite on Twitter&lt;/a&gt; 💜&lt;br&gt;
⭐️ &lt;a href="https://github.com/appwrite"&gt;Appwrite on GitHub&lt;/a&gt;&lt;br&gt;
💻 &lt;a href="https://www.learnwithjason.dev/build-a-live-voting-app"&gt;Learn with Jason episode on building apps with Appwrite&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>appwrite</category>
      <category>baas</category>
      <category>dx</category>
    </item>
    <item>
      <title>Jumping into the NFT Space? You're probably going to get scammed. A quick outline to protect your crypto's!</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Tue, 19 Oct 2021 16:27:29 +0000</pubDate>
      <link>https://forem.com/tessamero/jumping-into-the-nft-space-youre-probably-going-to-get-scammed-a-quick-outline-to-protect-your-cryptos-25k0</link>
      <guid>https://forem.com/tessamero/jumping-into-the-nft-space-youre-probably-going-to-get-scammed-a-quick-outline-to-protect-your-cryptos-25k0</guid>
      <description>

&lt;p&gt;TLDR; don't click links, if browsing web, use browser you don't keep wallet on, don't click links, turn off discord DMs, research projects for validity, don't hold all cryptos in one wallet&lt;/p&gt;




&lt;p&gt;You are feeling impulsive and in a rush. You have the case of "FOMO" - Fear of Missing Out. You know that if you don't click that link and mint an NFT within 1 minute, it will be sold out, and your chance of being able to profit significantly will be off the table.&lt;/p&gt;

&lt;p&gt;I'm writing this blog post mostly to send to a lot of friends that are new to the NFT space. I've seen way too many friends get scammed, and I'm sick of it. The smartest of the people can fall for these, especially when you don't have a lot of time to think as you want to purchase it as quickly as possible.&lt;/p&gt;

&lt;p&gt;Here's a quick outline of common scams that I see even the smartest people fall for. Don't be this person. Be careful, and don't rush into things until you are 100% sure it is the right decision.&lt;/p&gt;

&lt;p&gt;These examples are specific to waiting on minting/launch dates, and not aftermarket NFT marketplace sales.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discord DM's from Admins/Announcements&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the most common one. These scammers are making possibly millions a day. They make hundreds of accounts mimicking the exact username of the admin (sometimes using Ascii characters) of the NFT servers you are in, and have professional written up messages to send. They spam every single person in the Discord server. A lot of these servers have from 1k members to 500k members in a short period of time, so it's easy to find at least a few suckers to click the links they send.&lt;/p&gt;

&lt;p&gt;The link will look so close to the actual minting website. They will sometimes mention, "the website is back up and there's only 500 left!" so you feel rushed to click it before everyone does. &lt;/p&gt;

&lt;p&gt;You go to the website, connect your wallet, and 1 second later your wallet is wiped clean of all your money.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to protect yourself from this scam?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get Discord Nitro - you can turn off Direct Messagse (DM's) across all servers, then manually turn on DM's per server you want to receive messages in. This is the ONLY way. Or just don't open any DMs. Sometimes these DM's look like server announcements and not actual DM's so it can be risky.&lt;/li&gt;
&lt;li&gt;Don't hold all of your cryptocurrency in one single browser wallet (Meta Mask, Phantom...). Create multiple wallets. Use one wallet for your main wallet for minting with the exact amount of tokens you plan on using. So if something goes wrong, you don't lose everything at once.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;RUG PULLS&lt;/strong&gt;&lt;br&gt;
You join an NFT project, you see 30k followers on Twitter, 50k people joined the Discord in the last 7 days. It's legit, right? You go to mint on launch, everything goes fine. You pay 1 SOL ($160 ish each today), and everything is continuing as normal. The developers and owner of the project goes silent. The floor price (lowest value of the NFTs in the marketplace for that project) starts dropping. Everyone panics and sells off as fast as possible. Value drops to almost nothing. Then &lt;em&gt;poof&lt;/em&gt; the discord is closed down and they are gone.&lt;/p&gt;

&lt;p&gt;There's many different ways a rug pull can happen. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to protect yourself from this scam?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evaluate the number of Discord members vs how active people are chatting. It's easy to add 50k members of bots/fake people to make the numbers look good.&lt;/li&gt;
&lt;li&gt;Do a &lt;a href="https://sparktoro.com/tools/fake-followers-audit" rel="noopener noreferrer"&gt;Twitter audit&lt;/a&gt; and figure out the number of fake users. Usually under 15% means 100% real followers. When it hits the 40%+, you know they buy all their followers. This is just from my experience auditing. Look at their Twitter activity, is there a lot of RT's, likes, and comments on their posts with 50k followers? No activity on every post with 50k followers? Hmm red flag yeah?&lt;/li&gt;
&lt;li&gt;Research the project owner and artist. Are they all on anonymous accounts? Did they appear out of nowhere? All the members of the team have no followers with brand new social media accounts? No one knows their real identity? (Note: It is common everyone is on anonymous accounts, but it still pays off to do research and evaluate if it is worth the risk).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Twitter Replies with Official Mint Links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I see this common on Elon Musks tweets. He makes a post, and someone replies with a fake Elon Musk account, telling people to click the link, and if you send Bitcoin, you will receive 10x more bitcoin. People FALL for this. &lt;em&gt;sigh&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sometimes NFT projects will announce the official minting website on Twitter. Scammers can use fake accounts that look like that exact account and reply to it with a fake minting site designed to wipe out your wallet and take your cryptos. Be careful with links you click on. Think and evaluate before clicking on any links. The FOMO can wait, your money has more value.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google searching NFT projects&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most of these NFT projects are new. Created a month before launch, using hype and quick marketing to get their project known. There are a percentage of these that are legitimate with a team that has a great road map and a plan for the project. It's hard to find this, but researching helps.&lt;/p&gt;

&lt;p&gt;Sometimes you need to find that NFT project website, and you go on google. You will run into duplicates of that website scammers created that look so similar to the official URL, you cannot distinguish the difference. Even the website looks the same. Clicking the "Minting" or purchase button looks the same and works the same. Except - when you click on mint and you connect your wallet, it just takes ALL your money, and receive nothing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to protect yourself from this scam?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always, always, ALWAYS go to the official Discord server and find the channel that says "official links". Always click links from that channel and NOWHERE else. Unless links came from friends who are experienced and you trust.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm going to keep adding to this list as I have more time, and I see more people in these communities fall for scams. I'll keep trying to educate others so they don't potentially lose their life savings&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People in the NFT Discords posting links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I've seen random people post links to fake websites or NFT's that are exact copies of the project, but put on another marketplace, for half the price. People panic thinking they are jumping into a deal of a lifetime, click the link in the "general-chat" and purchase those NFTs. Then realize the value is $0 USD because it wasn't the actual project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to protect yourself from this scam?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Like I said above, don't click links from ANYONE. Ever. Never, ever, ever, ever click links.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Browsing the Web&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When browsing the web, especially going to random websites looking at code scripts, NFT websites, or anything crypto related, there's that slight chance, (okay it is very common as it happened to me while searching for code samples working with opensea API), that it will randomly try to connect to your wallet. If you hit that connect button when clicking around too quickly on a website, it can potentially transfer everything out of your browser wallet and to their account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to protect yourself from this scam?&lt;/strong&gt;&lt;br&gt;
Keep your wallet on a browser that you don't use to browse the web. Simple :) &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Announcements in Discord Servers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I just edited this blog post after seeing this happen twice on two different Discords. A Discord server gets hacked, and they push an announcement to everyone about a secret NFT project ready to mint immediately. Everyone buys in and gets all their crypto stolen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessatickle%2Fimage%2Fupload%2Fv1634710778%2Fdevto%2Fscreenshot2_yzryxt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessatickle%2Fimage%2Fupload%2Fv1634710778%2Fdevto%2Fscreenshot2_yzryxt.png" alt="Twitter Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessatickle%2Fimage%2Fupload%2Fv1634710778%2Fdevto%2Fscreenshot1_autbio.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessatickle%2Fimage%2Fupload%2Fv1634710778%2Fdevto%2Fscreenshot1_autbio.png" alt="Twitter Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to protect yourself from this scam?&lt;/strong&gt;&lt;br&gt;
Is it too good to be true? Is the gas price really low? Take a deep breath and think twice before clicking the mint button.&lt;/p&gt;

&lt;p&gt;So for now, protect your cryptos, and be safe. &amp;lt;3&lt;/p&gt;

</description>
      <category>nfts</category>
      <category>nft</category>
      <category>blockchain</category>
      <category>crypto</category>
    </item>
    <item>
      <title>Discord is Becoming a Chore! How to categorize and organize all of your servers!</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Mon, 26 Apr 2021 20:11:47 +0000</pubDate>
      <link>https://forem.com/tessamero/discord-is-becoming-a-chore-how-to-categorize-and-organize-all-of-your-servers-3h7g</link>
      <guid>https://forem.com/tessamero/discord-is-becoming-a-chore-how-to-categorize-and-organize-all-of-your-servers-3h7g</guid>
      <description>&lt;p&gt;Discord is becoming more and more popular to be the #1 selected tool for building a community. I’ve been a Discord user since 2016 and still learning more and more about the most efficient ways to use Discord.&lt;/p&gt;

&lt;p&gt;I ran into an issue where more and more people are sending their Discord server link. A community will have many chapters I want to be a part of, and then that’s another 5 servers to add. All of a sudden I have over 75 servers on my list. It becomes yet another “chore” and an overwhelming tool to use because it’s impossible to keep up with!&lt;/p&gt;

&lt;p&gt;I’m writing this quick blog post to let you know there’s a very easy way to manage all of your Discord servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can organize servers into folders, and color them&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can combine your entire server list into one server so you only have to check one server for important information&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’ll start out by creating a sample server and show you how to categorize your servers with subcategories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessamero%2Fimage%2Fupload%2Fv1619465187%2Fdevto%2Fvueserver.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessamero%2Fimage%2Fupload%2Fv1619465187%2Fdevto%2Fvueserver.png" alt="Add Vue.js communit Server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Categorize your servers
&lt;/h2&gt;

&lt;p&gt;You can nest your servers into folders and give it a name and color code. &lt;/p&gt;

&lt;p&gt;In the video example below, I added 3 servers to my Discord: Vue Server, Seattle Vue.js, and TalkJS. I can either create a Vue.js category, dragging the discord servers together, or a JavaScript category and combine all 3 servers together, depending on how organized you'd like to get.&lt;/p&gt;


  
Your browser does not support the video tag.


&lt;h2&gt;
  
  
  Combining all servers into YOUR server
&lt;/h2&gt;

&lt;p&gt;First you will need to create a server where you will be the ONLY member in it, since you are combining your selected channels from all other discord servers into yours.&lt;/p&gt;

&lt;p&gt;In this example, I'm creating a server called "Tessa's Combined Discord Stuff".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessamero%2Fimage%2Fupload%2Fv1619465798%2Fdevto%2Fcombined.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Ftessamero%2Fimage%2Fupload%2Fv1619465798%2Fdevto%2Fcombined.png" alt="Create Personal Server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, if there's a picture of a horn next to the channel name, it means you are able to "follow" that channel and subscribe to the new messages into your personal server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pull the data that you want
&lt;/h2&gt;

&lt;p&gt;In this video, I am pulling in announcements from seattle vue.js discord into my personal discord server into #general chat. Then I'm pulling the Media Devs Discord into the #mediadevs-announcements channel that i created in my own discord.&lt;/p&gt;


  
Your browser does not support the video tag.


&lt;p&gt;You can do this for ANY discord that has set their channel to "announcements" which gives the ability for users to "follow" it and add it to their personal discord.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Catch
&lt;/h2&gt;

&lt;p&gt;Most community organizers aren't aware of this feature as you have to go into the "Server Settings" and click on "Community" then enable "Community Mode". Then you can edit your channels and set it to "announcement" which gives it the "follow" option.&lt;/p&gt;

&lt;p&gt;If there's a channel on a server you want to follow, reach out to the community organizer and ask them if they can make it an "announcement type" channel so people can follow it and add it to their personal server. :) &lt;/p&gt;

</description>
      <category>community</category>
      <category>discuss</category>
      <category>discord</category>
    </item>
    <item>
      <title>Founded a Tech Company? Build Your Vision Before It's Too Late.</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Tue, 26 May 2020 18:59:42 +0000</pubDate>
      <link>https://forem.com/tessamero/founded-a-tech-company-build-your-vision-before-it-s-too-late-1a4p</link>
      <guid>https://forem.com/tessamero/founded-a-tech-company-build-your-vision-before-it-s-too-late-1a4p</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;So you've developed a great product, a consistent growing customer base, stakeholders, and everything is going perfect. Seems like a fairy tale right? You never created a vision? Who needs that? Your business is doing FINE, why make any changes after so much time, right? Wrong.&lt;/p&gt;

&lt;p&gt;One of the BIGGEST downfalls of not having a company vision is over a long period of time, you'll have changes in employees and there will always be a newer set of people working at your company. Company culture can evolve and change the the whole feel of working with others. Do you have a set of core values and principals for the employees to follow? What about a core purpose that would help inspire and encourage employees to do bigger things for your business? You don't have any of these? Oh right, because you think your business is doing just fine without. Even if you think you don't need values or a vision, you'd be surprised your company most likely HAS a vision, but maybe it's not laid out in words. A common interview question asked to a CEO, "If you can go back in time and change one thing about your business, what would it be?" It's commonly answered as, "I wish I created our company core values from the beginning".&lt;/p&gt;

&lt;p&gt;The purpose of this blog post is to help dig deep into your business's core roots and help define the vision that you've been searching for.&lt;/p&gt;

&lt;p&gt;As an example, I'm going to create all 4 of these for the company I work for. Take note it's just an example and not "in place" to help you with your company's vision. (I was part of the team for the initial process of building the company vision. The finalization process moved towards upper management).&lt;/p&gt;

&lt;h2&gt;
  
  
  Different Parts of your Vision
&lt;/h2&gt;

&lt;p&gt;There are 4 parts of your Vision that you'll need to put together, and it's very basic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Ideology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Values&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Core Purpose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mission&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BHAG&lt;/strong&gt; (Vision)&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Ideology
&lt;/h2&gt;

&lt;p&gt;A Core Ideology is our internal deep core values. A set of shared beliefs within a group. What is so true to us that we all passionately hold? That if someone doesn't fit this thought, that maybe they aren't true to the company? This doesn't need to be any set words. A Core ideology is something that can be said 200 different times, but have the same meaning and understanding with everyone at the company, in all perspectives. &lt;/p&gt;

&lt;p&gt;Having a clear core ideology will help with the hiring process as you want to bring in others that will fit the company's culture. It will help you guide your company vision and really influence the direction and discipline of your company as well.&lt;/p&gt;

&lt;p&gt;A core ideology is your &lt;em&gt;Core Values + Core Purpose&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Values
&lt;/h2&gt;

&lt;p&gt;Core values consist of 3-5 values about your company. If you find yourself having a longer list than 5, then you are doing it incorrectly. You're probably listing out obvious business practices that would make sense for any other business to follow.&lt;/p&gt;

&lt;p&gt;A core value is the reason for being. The reason to exist as a business. It's a very deep value that if you think down 50 years existing as a business, these core values will still be very accurate. A core value can never be "completed" as it's an ongoing value that everyone abides by. If your product changes, the market changes, your pricing and company structure changes, your core values should never change.&lt;/p&gt;

&lt;p&gt;Here are a few examples of company values unique to the company:&lt;/p&gt;

&lt;p&gt;Four Seasons Hotels &amp;amp; Resorts - "Advancing Cancer Research", "Supporting Sustainability"&lt;/p&gt;

&lt;p&gt;Facebook - "Build Social Value"&lt;/p&gt;

&lt;p&gt;Disney - "Entertaining the world through imagination"&lt;/p&gt;

&lt;p&gt;Google - "Focus on the user and all else will follow", "The need for information crosses all borders"&lt;/p&gt;

&lt;p&gt;Then there's all the very, very basic core values that are very common to a majority of companies, such as: &lt;/p&gt;

&lt;p&gt;Integrity&lt;br&gt;
Accountability&lt;br&gt;
Ownership&lt;br&gt;
Trust&lt;br&gt;
Passion&lt;br&gt;
Work Hard&lt;br&gt;
Innovate&lt;/p&gt;

&lt;p&gt;And so many others. Of course it's okay to have similar core values, but you don't want to list 50 different things that seem obvious. Southwest Airlines has 22 core values. You can see they couldn't decide what was most important to them to the core. You really need to think to the very root of your company on what is most important.&lt;/p&gt;

&lt;p&gt;For example, the core roots of the &lt;a href="https://cloudinary.com"&gt;company I work for&lt;/a&gt;, if I look at the very heart of the company relates to two areas: Customers and Culture. &lt;/p&gt;

&lt;p&gt;With our customers, we make them a priority and we go above and beyond by every possibility to ensure everyone is happy with our product. So if I had to create our first Core Value, it would be:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Treat Customers How We'd Like to Be Treated"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This would cover many different areas for core values. Respect. Trust. Drive. Work Hard. Teamwork. Excellence. Community. Doing the Right Thing. Humility. Integrity. One thing that makes the company I work for stand out is their "Above and Beyond" attitude. We have one of the best customer service representatives, who also all have knowledge of programming to be able to help with highly technical questions. We have Sales people who care about the customers as if they are someone we'd have dinner with and just have a fun chat. I'm on the Developer Relations team, and our team cares more about educating developers than we are at profits. We have departments that care about customers solving problems with integrations. Departments that really care about innovation and keeping up with the needs of customers as their technology/applications evolve. And so forth...&lt;/p&gt;

&lt;p&gt;Secondly, as someone who is still kind-of new to my company (a year and a half) , it's hard to really evaluate what the true core values are without being part of the company from the beginning, but on a slightly outside perspective, one thing that internally makes the company so successful is the family-like culture. So the second Core Value I'd create would be: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Embrace our Cloudinary Family"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reasoning behind this is because, since the very beginning of the company, people seem to care deeply about each other not only on a business level, but on a personal level as well. People work together very well as a team, everyone works as a leader in their own way. We embrace each other's differences and listen to each other's opinions and feedback that helps gain different perspectives on decisions. Because we act as one big family, we all have fun working together and individuals are more comfortable speaking up about what they believe in. Although transparency between teams is always an issue at most companies, I believe the company I work for has better transparency than other companies I've worked at in the past, and a big part of this is because of the "family" like feel. No matter the position of someone, they speak to you as if you are an equal part as we are all working together to accomplish one major goal. &lt;/p&gt;

&lt;p&gt;So if I were to give my company core values, it would only be these two. One that represents us externally and one that represents us internally, down to the core.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Purpose - The WHY?
&lt;/h2&gt;

&lt;p&gt;A Core Purpose is also something that is "never completed". A core purpose guides the task. What do you make? Why do you make it? Why is that important? Why should people care about using your product? Why do you even exist? &lt;/p&gt;

&lt;p&gt;Your Core Purpose needs to inspire everyone at your company at all levels. This is the icing on the cake. The key to having a successful business. Your Core Purpose is so deep that you should see something that is a great loss if this business ever just "stops" and "doesn't exist" anymore. &lt;/p&gt;

&lt;p&gt;A Core Purpose is NOT a mission or value.&lt;/p&gt;

&lt;p&gt;Examples of Company's and their Core Purpose:&lt;/p&gt;

&lt;p&gt;3M - "To solve unsolved problems innovatively"&lt;br&gt;
Hewlett-Packard - "To strengthen the social fabric by continually democratizing home ownership"&lt;br&gt;
Nike - "To experience the emotion of competition, winning, and crushing competitors"&lt;br&gt;
Sony - "To experience the joy of advancing and applying technology for the benefit of the public".&lt;/p&gt;

&lt;p&gt;One of the reasons why Sony became so successful from the beginning is their change in Japanese technology. One of their missions were to only create high end items to change the reputation of the quality of products you can buy from Japan, which made them one of the most successful technology companies in the world.&lt;/p&gt;

&lt;p&gt;To simplify it, you are asking yourself one question "Why does your company believe they can make a difference?"&lt;/p&gt;

&lt;p&gt;If I had to create a Core Purpose/Vision statement for the company I work at, it would be along these lines of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"To simplify the media experience for all individuals"&lt;/strong&gt;&lt;br&gt;
or&lt;br&gt;
&lt;strong&gt;To advance the media experience so simple and unique that everyone will use it&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mission Statement
&lt;/h2&gt;

&lt;p&gt;After you determine the Why (Purpose), the What (Vision), you now come up with your How (Mission). A mission is your path to purpose. Your mission is your plan of action. What makes you unique and what decisions will you make to get to that destination?&lt;/p&gt;

&lt;p&gt;What is our promise to the world?&lt;/p&gt;

&lt;p&gt;Example Mission Statements:&lt;/p&gt;

&lt;p&gt;Tesla - "Tesla's mission is to accelerate the world's transition to sustainable energy."&lt;/p&gt;

&lt;p&gt;Google - "Our mission is to organize the world's information and make it universially accessible and useful."&lt;/p&gt;

&lt;p&gt;Nike - "To bring inspiration and innovation to every athlete"&lt;/p&gt;

&lt;p&gt;Water.org - "To bring safe water and sanitation to the world"&lt;/p&gt;

&lt;p&gt;Starbucks - "To inspire and nurture the human spirit - one person, one cup and one neighborhood at a time."&lt;/p&gt;

&lt;p&gt;Verizon - "We deliver the promise of the digital world to our customers".&lt;/p&gt;

&lt;p&gt;An example I'd create for Cloudinary:&lt;/p&gt;

&lt;p&gt;First off, let me think of some keywords that make sense to our promises to users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhancing our media experience&lt;/li&gt;
&lt;li&gt;Making it easy for non-developers to use with our Digital Asset Management system&lt;/li&gt;
&lt;li&gt;Making it easy for developers to use with improved developer experience&lt;/li&gt;
&lt;li&gt;The internet is powered by media&lt;/li&gt;
&lt;li&gt;Improving the Rich-media experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;To make the media experience unique and innovative&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;or keeping it simple to what content we already have that exists: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To create an engaging digital media experience&lt;/strong&gt; (kind of what's on the homepage already)&lt;/p&gt;

&lt;p&gt;Another fun thought:&lt;br&gt;
&lt;strong&gt;To power the entire web with our rich-media experience with our unique and innovative product&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  BHAG
&lt;/h2&gt;

&lt;p&gt;BHAG stands for "Big Hairy Audacious Goal" which is a slightly weird acronym. I thought it was a joke when I first read it, but it definitely isn't. This is your vision statement. Your core statement of what your company stands for and will influence everything - culture, employees, productivity, and overall &lt;em&gt;everything&lt;/em&gt; your company stands for.&lt;/p&gt;

&lt;p&gt;Creating a BHAG for your company is highly important. It's a clearly articulated goal that is extremely inspiring to everyone. A goal that everyone at the company feels inspired by that makes everyone continue to work harder. It creates the drive and momentum at the company. When you move forward 10 years down the road at your company, let's say 80% of the employees are new in the last 5 years, the company's vision won't be lost. No matter the rotation of new employees, everyone will still have this very clear goal about your company, driving more productivity and energy, which will be seen through the quality of your product/technology.&lt;/p&gt;

&lt;p&gt;Example BHAGs:&lt;br&gt;
&lt;a href="https://www.rhythmsystems.com/blog/bid/152192/Classic-BHAG-Examples"&gt;Different Types of BHAGs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Heinz - "To be the world's premier food company, offering nutritious, superior tasting foods to people everywhere"&lt;/p&gt;

&lt;p&gt;Amazon - "Our vision is to be the earth's most customer centric company; to build a place where people can come to find and discover anything they might want to buy online".&lt;/p&gt;

&lt;p&gt;If I had to create a BHAG for Cloudinary, it would be:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"To be the leading provider for media and simplifying the ability to integrate with every application in the world for the use of managing media, while being unique and committing to innovation and changes in media technology.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reason behind why I chose this as our BHAG, or our Vision. This is a goal that we can forever work towards and have the company all aligned on the same objective, no matter how our strategy changes. (Take note again this is just an exercise example, not actuality). Currently we are the leading provider when it comes to the use of media technology for automating image and video processing workflows by way of media management and using S3 to store files. Half of our customers are Developers and the other half are Non-Developers, and we make sure we can cater to both sides of the pool. If I imagined our company in 30 years, yes we will still be catering to both developers and non-developers. Keeping up with changes in technology? We take that very seriously as we have individuals at our company who are constantly researching and making sure we are ahead of the game when it comes to innovating our product. We keep up to date with compliance and standards, such as &lt;a href="https://cloudinary.com/blog/gdpr_the_what_the_when_the_why_and_how_cloudinary_is_preparing_for_day_0"&gt;GDPR Compliance&lt;/a&gt;. Staying unique as a company? This is one thing that attracted me to working here. It's a unique product that isn't trying to "keep up with competitors while just adding more features". Cloudinary is it's own unique platform creating it's own vision in a way that makes it a unique product as well as experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion and Adopting the Vision
&lt;/h2&gt;

&lt;p&gt;It's never too late to start building your company vision. Waiting another 10 years and realizing you should have done it long ago is where you want to prevent your company from heading. Start now while you are ahead!&lt;/p&gt;

&lt;p&gt;One of the biggest concerns is, "Okay, so we threw up a page for our company vision. We told employees where the page is but no one really knows it's there or what's on the page".&lt;/p&gt;

&lt;p&gt;This can easily be solved by going over company vision during your All-Hands company meetings as well as department meetings. This needs to be reminded to employees on a &lt;em&gt;monthly basis&lt;/em&gt; so it's never forgotten by asking each other what they did that fits the company vision.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Image Credit: &lt;a href="https://unsplash.com/@austinchan"&gt;https://unsplash.com/@austinchan&lt;/a&gt;&lt;br&gt;
Book - &lt;a href="https://www.amazon.com/HBRs-10-Must-Reads-Strategy/dp/1422157989/"&gt;"HBR's 10 Must Reads On Strategy"&lt;/a&gt;&lt;br&gt;
Article - &lt;a href="https://peakon.com/blog/workplace-culture/best-company-core-values/"&gt;"10 Companies with Core Values That Actually Reflect Their Culture" by Ross Brooks&lt;/a&gt;&lt;br&gt;
Article - &lt;a href="https://inside.6q.io/190-examples-of-company-values/"&gt;"190 Examples of Company Values"&lt;/a&gt;&lt;br&gt;
Article - &lt;a href="https://www.kinesisinc.com/how-to-discover-your-companys-core-purpose/"&gt;"How to Discover Your Company's Core Purpose"&lt;/a&gt;&lt;br&gt;
Article - &lt;a href="https://www.investopedia.com/terms/b/big-hairy-audacious-goal-bhag.asp"&gt;"Big Hairy Audacious Goal (BHAG)"&lt;/a&gt;&lt;/p&gt;

</description>
      <category>leadership</category>
      <category>vision</category>
      <category>advice</category>
      <category>founder</category>
    </item>
    <item>
      <title>Zoom Bombing - "That won't EVER happen to me!"</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Tue, 19 May 2020 23:20:46 +0000</pubDate>
      <link>https://forem.com/tessamero/zoom-bombing-that-won-t-ever-happen-to-me-2gob</link>
      <guid>https://forem.com/tessamero/zoom-bombing-that-won-t-ever-happen-to-me-2gob</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have heard the term "Zoom Bombing" a few times, but didn't really understand the meaning behind it. I thought it was some kind of prank people pull or it meant that 1 person joins your Zoom meeting and makes loud noises and leaves really quick, so I didn't think anything of it.&lt;/p&gt;

&lt;p&gt;I didn't think that would ever happen to me as I am only posting about my developer meetups to the tech meetup community and twitter developer community, so I wouldn't think there'd be any issues with having to take extra security measures. Well, I was wrong and I learned a huge lesson. My goal of this post is to make sure that others don't experience the same thing as I did. And to the community that went through the Zoom Bombing, I sincerely apologize for the disrespectful and vulgar language that was being used on their end, as I will make sure this does not happen EVER again.&lt;/p&gt;

&lt;p&gt;The way my meetups are structured is the URL has to be public for all the developer communities to view. The microphone/webcams are usually default to on as we are talking together as a community. I am unable to just "give the link out privately" as that's just not how developer meetups work. I spread out the information to other developer communities and make it a free and open event for others to join anywhere in the world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Zoom Bombing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Believe it or not, there are large communities of not-so-good people out there looking for public Zoom links that they can bring to their groups to prepare to "Zoom Bomb". &lt;/p&gt;

&lt;p&gt;When I say "bomb" I mean a LOT of people, who you have absolute no relation or network with, join your Zoom meeting, finding every way to make inappropriate and derogatory things they can, whether it's whiteboarding over the speakers presentation, taking advantage of an open mic, or showing imagery that is inappropriate on the webcam.&lt;/p&gt;

&lt;p&gt;Here are some measures to prepare your Developer Event to be more secure:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set a Password&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Okay, so maybe a password isn't the most effective way as you are an event organizer and are supposed to be posting the full joinable Zoom link in all of your social forums, but it's better than nothing!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Require Logging into Zoom&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This just makes it slightly more difficult to zoom bomb someone if all of them have to login, so this will minimize the bombing affect! You can find this option in your zoom meeting settings when you login.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security Tab: Disable Share Screen, Chat, and Enable Waiting Room.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Disabling Share Screen: This is an obvious one. You should only manually enable this for the hosts/speakers. You can right click their name and click on "Co-Host" and it will give them privileges to show video/sound/screenshare.&lt;/p&gt;

&lt;p&gt;Disabling Chat: When I was Zoom bombed, random people were joining and posting derogatory comments in the Chat. This should stay disabled. You can enable it at certain points, such as during intro, during Q&amp;amp;A time, and during the closing, but be ready to hit the "disable chat" button if someone starts bombing the chat with bad words.&lt;/p&gt;

&lt;p&gt;Enable Waiting Room: This was the biggest thing that halted the Zoom bombing. Because they were joining non-stop, more and more people doing very bad things, we were able to stop them from joining.&lt;/p&gt;

&lt;p&gt;Disabling Voice Chat: When you start your meeting, you should be able to click on "Mute All" for participants. They can request to speak by clicking on "Raise Hand" icon next to the participants list, and the host will be able to see someone has their hands raised, and you can unmute that participant.&lt;/p&gt;

&lt;p&gt;There's also an option that defaults to "Allow Participants to Unmute themselves" under the "..." settings on the bottom right corner next to "Unmute All". You want to uncheck that option or else if you mute everyone, they can unmute themselves.&lt;/p&gt;

&lt;p&gt;Disabling Webcam: This is rather important after the things that I experienced today. People can join and turn on a virtual camera and display Adult Content. Default to everything OFF, and give permission one individual at a time.&lt;/p&gt;

&lt;p&gt;This should be a good amount of steps to be on the safe side, although it seems to remove the "community" aspect of your event, this is what works right now as long as these Zoom Bombers exist. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't wait to be Zoom Bombed before actually taking these steps. Even if it doesn't bother or hurt your feelings on what "they" did during a Zoom Bomb, something may happen that could trigger or really hurt one of your community members, and that's something you want to prevent from happening.&lt;/p&gt;

&lt;p&gt;Take care of your community and take these extra security precautions, even if you think, "That won't happen to me".&lt;/p&gt;

&lt;p&gt;Image Credit: &lt;a href="https://unsplash.com/@jens_johnsson"&gt;https://unsplash.com/@jens_johnsson&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zoom</category>
      <category>meetups</category>
      <category>events</category>
    </item>
    <item>
      <title>Stream Your Events Live Using the Free Version of Zoom and Twitch.</title>
      <dc:creator>Tessa Mero</dc:creator>
      <pubDate>Thu, 14 May 2020 18:23:22 +0000</pubDate>
      <link>https://forem.com/tessamero/stream-your-events-live-using-the-free-version-of-zoom-and-twitch-3k83</link>
      <guid>https://forem.com/tessamero/stream-your-events-live-using-the-free-version-of-zoom-and-twitch-3k83</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One of the most common comments I've heard from event organizers is, "I would stream my events live if I knew how. I've seen How-to videos but it seems confusing". In this post, I want to go over step-by-step in the most simplest way, and help others troubleshoot any issues they are having via comments as this is something I am really enjoying and would like to master over time.&lt;/p&gt;

&lt;p&gt;Event organizers are contributing their free time running multiple community events, and many do not have the budget to upgrade their Zoom account, so I'm providing a work around to still provide live streamed/recorded events for their community without having to upgrade your Zoom account. The free Zoom account allows for up to 3 participants in your Zoom call and a 40 minute session. If you do choose to pay for the upgrade, that's great, you can have more than 3 participants as well as have your event much longer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Goal&lt;/strong&gt;&lt;br&gt;
Using Zoom for the Event host(s) and the presenter with a maximum of 3 people in the Zoom meeting for a 40 minute stream using the Free version of Zoom. Your community will be on Twitch watching the event and asking questions to the presenter live and collaborating with the chat. See an example of &lt;a href="https://www.twitch.tv/twitchdev/video/554270950"&gt;"DevRel Meetup - Streaming Developer Relations &amp;amp; Coding on Twitch"&lt;/a&gt; as an example of a meetup on Twitch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://careergamers.com/what-are-the-minimum-specs-for-a-streaming-pc/"&gt;Minimum Specifications to Stream on your PC&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note: I do not recommend doing this set-up on a Mac as I've put quite a few hours in realizing that the GPU is not good enough for what is needed to stream and StreamLabs OBS was just released for the Mac on March 31st, 2020, so I wouldn't say it's necessarily "bug free". There's ways around the issues you'll run into, but in this post I will only go over (and help you troubleshoot) with the PC version of the software.&lt;/p&gt;

&lt;p&gt;Also, using a monitor that's a minimum of 24 inches would be helpful as you are using multiple windows on your main monitor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a Twitch Account&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You can create a &lt;a href="https://www.twitch.tv/"&gt;Free Twitch account here&lt;/a&gt;. &lt;/li&gt;
&lt;li&gt;All you need to do is update your profile with what the channel is about by going to &lt;em&gt;twitch.tv/YourTwitchUsername/about&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Update your events on the schedule page at &lt;em&gt;twitch.tv/YourTwitchUsername/schedule&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Upload the event photo and banner background to look more professional found here &lt;em&gt;dashboard.twitch.tv/u/YourTwitchUsername/settings/channel&lt;/em&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;and then you are all set on the Twitch side!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Download StreamLabs OBS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://streamlabs.com/"&gt;Download StreamLabs for PC&lt;/a&gt;. Why StreamLabs? First off, it's FREE. Second, it's Open Source. If anyone knows me, I'm a &lt;strong&gt;huge&lt;/strong&gt; advocate for Free and Open Source Software (FOSS). StreamLabs is the software that allows you to create the "view" that is going to be live streamed. You can add sources, such as your webcam, microphone, what browser/window/monitor you will be displaying. You can add a lot of other things, like the Twitch chat window right on the video, or even custom graphics and animations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Register for a Zoom Account&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TLDR; Use the Application version of Zoom&lt;/p&gt;

&lt;p&gt;I'd recommend using the Software version of Zoom, not the browser version. For some reason the browser only shows two maximum webcam views: Your own video on the top right corner, and the main person speaking. The 3rd person won't show up, at least for all the time I tried to troubleshoot that, I didn't find another way around it. It doesn't matter though as you cannot add a browser version of "Zoom" as a source URL on StreamLabs OBS, so it's important to use the application version of Zoom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Open StreamLabs OBS and Set-Up&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go through the guided set-up process for StreamLabs OBS. It should be a few questions about your webcam/mic and it will ask you to connect to your Twitch account.&lt;/p&gt;

&lt;p&gt;It may create a custom Scene for you with all the added sources you need. You don't want to use that. Let's start from scratch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Click on "Manage All" under "Scenes"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SmvJy13w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tai3loiehku1jf76xjc8.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SmvJy13w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tai3loiehku1jf76xjc8.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Click on "+ Create New" to add a new Scene&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FmOPQztr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y02f1j1g2jbf1d9exl4h.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FmOPQztr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y02f1j1g2jbf1d9exl4h.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will notice it saved as Scene (1) or maybe Scene (2). You can click on "Manage All" under "Scenes" again and click on "Rename" on the right side of the new Source name.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8d-Cs36P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kxofstyde0eq8qtz0nef.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8d-Cs36P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kxofstyde0eq8qtz0nef.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, I renamed it to VueJS Meetup. You can have a different setup for different events you have as you may want to use custom graphics/layouts.&lt;/p&gt;

&lt;p&gt;Now you will see the word "Scene" and you can right click it and rename it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--k7-Ai-T5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bc8bbo1cyryitxqk03na.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k7-Ai-T5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/bc8bbo1cyryitxqk03na.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, I renamed it to "Live Zoom Meeting" as that will be the scene you can change it to, as it'll be your Zoom meeting that is live. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U5bpMrrs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xmtxjfekju8590raplh9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U5bpMrrs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xmtxjfekju8590raplh9.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Add Sources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the "+" sign under the middle column called "Sources". These are &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gRNZTxFT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fx7f14b3clos2x2yg9wl.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gRNZTxFT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fx7f14b3clos2x2yg9wl.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add Your Microphone and Computer Sound by clicking on "Audio Output Capture" and clicking on "Add Source" at the bottom right corner of that dialogue box. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7q7WQswH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gmmsjr0dx73odv7mr8vg.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7q7WQswH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gmmsjr0dx73odv7mr8vg.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rename your Source to something recognizable, exactly to that device. In this case, I am using my HyperX Cloud Headphones for sound and microphone, so I renamed it to that and then clicked on "Add Source".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6m-d2XLL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7fuqlk8olsijskakrasy.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6m-d2XLL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7fuqlk8olsijskakrasy.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the Device on the list and click "Done".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ry2-mnZF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/46zb5ctrms5p6ktbtlzh.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ry2-mnZF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/46zb5ctrms5p6ktbtlzh.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see it working by playing a YouTube video in the background while talking at the same time. You will see your Mic/Aux light up a different green color as well as the "HyperX Cloud Headphones". I muted "Desktop Audio" as it was set up there by default and I already have sound on the headset.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KwKFq5F9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xkxe9qzk7vk1pwk19igv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KwKFq5F9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xkxe9qzk7vk1pwk19igv.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Turn on Your Zoom Meeting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Okay so you have your Zoom meeting open and your presenter and you or your presenter has the slides open. You should use your main monitor to have the Zoom meeting window on the left side of your screen, taking up about 65% of your screen, and on the right side you should have StreamLabs OBS (for viewing your Twitch chat and making sure your video feed is showing up appropriately to Twitch). Why am I not using a second monitor? Well that would be weird if my eyes were constantly looking to the right. I want to stay engaged and keep my head and eyes forward towards the camera. ;-)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m5FaZhF0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5yqx0r9hi4vigzbxxyc5.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m5FaZhF0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/5yqx0r9hi4vigzbxxyc5.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that your Monitor 1 view is set up, you can add the next Source!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w_i-46BI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c58fv0d9dwn8w22tcqkd.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w_i-46BI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c58fv0d9dwn8w22tcqkd.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rename it to "Zoom Meeting"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--64out5Q0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ykqd66qwvcmt8t32yat9.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--64out5Q0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ykqd66qwvcmt8t32yat9.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Okay, now if you are seeing something like this on StreamLabs OBS where it looks a bit messy as you have Zoom on the left side and StreamLabs OBS on the right side with some kind of inception going on, then you are on the right track!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---SpcPK6n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6g7k7bu3byffobkqr79t.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---SpcPK6n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6g7k7bu3byffobkqr79t.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8: Time to Crop the Zoom meeting!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can click on the corners to resize the screen. Resize it so it fits the maximum space of the black box. THEN you can CROP it. Crop only the Zoom meeting window cutting off the left edge, top edge, right side of your monitor view, and the bottom Zoom buttons, so all you see is the participants of up to 3 organisers/speaker and the screenshared presentation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J-WNJ5Zl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/b5acq5v1tx56p47qj1ix.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J-WNJ5Zl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/b5acq5v1tx56p47qj1ix.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9: Adjust your Settings before going Live!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on the Settings wheel at the very bottom left corner of your StreamLabs OBS. Go through each tab and make adjustments that work for you. I wouldn't change ANY setting unless you know exactly what it's doing. &lt;/p&gt;

&lt;p&gt;Go to "Video" and change your Base (Canvas) Resolution and Output (Scaled) Resolution to 1920x1080.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HVQ241Cs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/smrjlzudop6um074apmb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HVQ241Cs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/smrjlzudop6um074apmb.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you are ready to Go Live! Click on the "Go Live" button at the bottom right corner.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give it a Title that people will see on Twitch&lt;/li&gt;
&lt;li&gt;Select "IRL" for the Game, as "IRL" means In Real Life related streaming, not video games.&lt;/li&gt;
&lt;li&gt;Tags: "Software Development" as I don't know what other tags we can add.&lt;/li&gt;
&lt;li&gt;Then "Confirm &amp;amp; Go Live"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wj2BXO8Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jtj351w4g184orrnb8pp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wj2BXO8Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jtj351w4g184orrnb8pp.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10: Test Before Going Live!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before pushing live, you would probably want to do a quick test to see what it's going to look/sound like on Twitch. You can do this by clicking on "REC" to the left of the Go Live button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rtpNVngZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/spvdpnout66lw7h8adnn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rtpNVngZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/spvdpnout66lw7h8adnn.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before you record, you should probably want to know where your recording is going and be able to select the file format you'd want.&lt;/p&gt;

&lt;p&gt;Go to the pinwheel icon to enter your "Settings" and click on "Output" tab on the left column. Then change the "Output Mode" from Simple to "Advanced". Click on the Recording tab and you can change your Recording Path and the Recording Format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_fcLWbDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ru3l0q2ykibfwys7tcx4.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_fcLWbDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ru3l0q2ykibfwys7tcx4.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you made your test video, which what you see in the video is exactly what will show up on Twitch.&lt;/p&gt;

&lt;p&gt;You can see the results from this &lt;a href="https://youtu.be/sMUO6V0xvCw"&gt;set-up here on YouTube&lt;/a&gt;, which would be the exact view of what would be streamed on Twitch.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hopefully this tutorial helps get other developer community leaders set-up to live stream their events. If you run into any issues, please make a comment and I will adjust this tutorial accordingly.&lt;/p&gt;

&lt;p&gt;Good luck everyone and looking forward to troubleshooting with you!&lt;/p&gt;

</description>
      <category>events</category>
      <category>conferences</category>
      <category>streaming</category>
      <category>twitch</category>
    </item>
  </channel>
</rss>
