<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Xiang Gao</title>
    <description>The latest articles on DEV Community by Xiang Gao (@xiang_gao_f0c4afa395fc88a).</description>
    <link>https://dev.to/xiang_gao_f0c4afa395fc88a</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%2F3871807%2Fc443ae77-0ccc-4af5-937e-04a1044b6438.jpg</url>
      <title>DEV Community: Xiang Gao</title>
      <link>https://dev.to/xiang_gao_f0c4afa395fc88a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/xiang_gao_f0c4afa395fc88a"/>
    <language>en</language>
    <item>
      <title>I built a fullscreen text tool with Next.js for signs, events, and quick display use cases</title>
      <dc:creator>Xiang Gao</dc:creator>
      <pubDate>Fri, 10 Apr 2026 12:56:38 +0000</pubDate>
      <link>https://dev.to/xiang_gao_f0c4afa395fc88a/i-built-a-fullscreen-text-tool-with-nextjs-for-signs-events-and-quick-display-use-cases-4ead</link>
      <guid>https://dev.to/xiang_gao_f0c4afa395fc88a/i-built-a-fullscreen-text-tool-with-nextjs-for-signs-events-and-quick-display-use-cases-4ead</guid>
      <description>&lt;h1&gt;
  
  
  I built a fullscreen text tool with Next.js for signs, events, and quick display use cases
&lt;/h1&gt;

&lt;p&gt;I recently built a small web utility called &lt;strong&gt;Fullscreen Text&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://full-screen.app" rel="noopener noreferrer"&gt;https://full-screen.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea is simple: sometimes you just want to type a short message and make it fullscreen immediately on a phone, tablet, or laptop.&lt;/p&gt;

&lt;p&gt;No account, no setup, no complicated controls. Just type and show.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;This started from a very practical problem.&lt;/p&gt;

&lt;p&gt;There are lots of moments where you need to display a short piece of text quickly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a temporary sign at an event&lt;/li&gt;
&lt;li&gt;a cheering message at a concert&lt;/li&gt;
&lt;li&gt;a meeting or classroom instruction&lt;/li&gt;
&lt;li&gt;a livestream prompt like “5 min break”&lt;/li&gt;
&lt;li&gt;a quick message on a secondary screen&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most existing solutions I found felt either too old, too cluttered, or too slow to use on mobile.&lt;/p&gt;

&lt;p&gt;So I wanted to build something that felt:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fast&lt;/li&gt;
&lt;li&gt;obvious&lt;/li&gt;
&lt;li&gt;lightweight&lt;/li&gt;
&lt;li&gt;readable from a distance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the current version does
&lt;/h2&gt;

&lt;p&gt;The current MVP focuses on one thing only: &lt;strong&gt;fullscreen text display&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;type a short message&lt;/li&gt;
&lt;li&gt;choose a display style&lt;/li&gt;
&lt;li&gt;open it instantly in fullscreen&lt;/li&gt;
&lt;li&gt;use custom text and background colors&lt;/li&gt;
&lt;li&gt;use it on both mobile and desktop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The homepage is also the main landing page, so I tried to keep the experience simple while still making the page understandable for first-time visitors and search engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;p&gt;I built it with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;App Router&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The product is intentionally frontend-first and lightweight.&lt;/p&gt;

&lt;p&gt;For the newsletter / waitlist, I used Buttondown instead of building a custom backend. For a small MVP, that felt like the right tradeoff.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few implementation details
&lt;/h2&gt;

&lt;p&gt;A few things were more interesting than they looked at first:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Fullscreen behavior
&lt;/h3&gt;

&lt;p&gt;The goal was to let users go fullscreen as directly as possible.&lt;/p&gt;

&lt;p&gt;Instead of forcing people into a separate step-heavy flow, I changed it so the homepage can open a fullscreen overlay directly. That made the main interaction much faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Text sizing
&lt;/h3&gt;

&lt;p&gt;One of the hardest parts of a tool like this is not the fullscreen API itself — it’s making the text feel visually right.&lt;/p&gt;

&lt;p&gt;Short text should feel bold and huge.&lt;br&gt;
Longer text still needs to remain readable.&lt;/p&gt;

&lt;p&gt;I ended up using a simple text-length-based sizing strategy, which works well enough for an MVP and keeps the implementation maintainable.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Presets and customization
&lt;/h3&gt;

&lt;p&gt;I added a small set of display presets and also a custom color option.&lt;/p&gt;

&lt;p&gt;That gives users enough flexibility for practical use without turning the app into a complicated design tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. SEO for a utility page
&lt;/h3&gt;

&lt;p&gt;I wanted the homepage to be both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the tool itself&lt;/li&gt;
&lt;li&gt;the main search landing page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That meant paying attention to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title&lt;/li&gt;
&lt;li&gt;description&lt;/li&gt;
&lt;li&gt;canonical&lt;/li&gt;
&lt;li&gt;robots&lt;/li&gt;
&lt;li&gt;sitemap&lt;/li&gt;
&lt;li&gt;simple on-page content structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a utility site, I think this “tool page + landing page in one” approach makes more sense than splitting everything too early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design choices
&lt;/h2&gt;

&lt;p&gt;A lot of the design work was about subtraction, not addition.&lt;/p&gt;

&lt;p&gt;I intentionally removed or avoided things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;login&lt;/li&gt;
&lt;li&gt;dashboards&lt;/li&gt;
&lt;li&gt;too many controls&lt;/li&gt;
&lt;li&gt;over-explaining the interface&lt;/li&gt;
&lt;li&gt;complex page sections that distract from the main action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main goal is still very straightforward:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;type text -&amp;gt; show it fullscreen&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;A few takeaways from building this MVP:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;very small tools can still benefit from strong UX polish&lt;/li&gt;
&lt;li&gt;utility sites should be extremely clear about their single main action&lt;/li&gt;
&lt;li&gt;“simple” products often take more iteration than expected&lt;/li&gt;
&lt;li&gt;lightweight SEO fundamentals matter even for tiny tools&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  It’s live
&lt;/h2&gt;

&lt;p&gt;You can try it here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://full-screen.app" rel="noopener noreferrer"&gt;https://full-screen.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you do, I’d really love feedback on questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What real-world use case would you use this for?&lt;/li&gt;
&lt;li&gt;Does the current fullscreen flow feel natural?&lt;/li&gt;
&lt;li&gt;Are the presets useful enough?&lt;/li&gt;
&lt;li&gt;What’s the one feature you’d add next?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks for reading.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>typescript</category>
      <category>indiehackers</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
