<?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: Amit Gupta</title>
    <description>The latest articles on DEV Community by Amit Gupta (@amitguptaappschance).</description>
    <link>https://dev.to/amitguptaappschance</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4046707%2F1d68b58f-4a55-4ff3-bbe8-d020e45e6e41.jpg</url>
      <title>DEV Community: Amit Gupta</title>
      <link>https://dev.to/amitguptaappschance</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amitguptaappschance"/>
    <language>en</language>
    <item>
      <title>Building PlayLaunch: What I Learned While Building a Product Launch Platform with Spring Boot</title>
      <dc:creator>Amit Gupta</dc:creator>
      <pubDate>Tue, 11 Aug 2026 03:43:18 +0000</pubDate>
      <link>https://dev.to/amitguptaappschance/building-playlaunch-what-i-learned-while-building-a-product-launch-platform-with-spring-boot-5hf0</link>
      <guid>https://dev.to/amitguptaappschance/building-playlaunch-what-i-learned-while-building-a-product-launch-platform-with-spring-boot-5hf0</guid>
      <description>&lt;p&gt;Building a product is only half the journey.&lt;br&gt;
The other half is getting people to discover it, try it, give feedback, and eventually become users.&lt;/p&gt;

&lt;p&gt;That was one of the reasons I started working on PlayLaunch — a platform designed around product launches and discovery.&lt;/p&gt;

&lt;p&gt;While building it, I wanted to keep the architecture relatively simple, practical, and production-oriented instead of introducing unnecessary complexity from day one.&lt;/p&gt;

&lt;p&gt;This post shares what I built, the technology choices I made, and some lessons I learned along the way.&lt;/p&gt;

&lt;p&gt;🚀 What is PlayLaunch?&lt;/p&gt;

&lt;p&gt;PlayLaunch is a platform for discovering and showcasing products, apps, startups, and new ideas.&lt;/p&gt;

&lt;p&gt;The basic idea is simple:&lt;/p&gt;

&lt;p&gt;Build something → Launch it → Get discovered → Collect feedback → Grow.&lt;/p&gt;

&lt;p&gt;For developers and indie makers, launching a product can be surprisingly difficult.&lt;/p&gt;

&lt;p&gt;You may have a great app or SaaS product, but getting the first few users and meaningful feedback is often harder than writing the code.&lt;/p&gt;

&lt;p&gt;PlayLaunch is my attempt to make that discovery process easier.&lt;/p&gt;

&lt;p&gt;🏗️ The Technology Stack&lt;/p&gt;

&lt;p&gt;For the backend, I chose a straightforward stack:&lt;/p&gt;

&lt;p&gt;Java 21&lt;br&gt;
Spring Boot&lt;br&gt;
Spring Security&lt;br&gt;
PostgreSQL&lt;br&gt;
REST APIs&lt;br&gt;
JWT-based authentication&lt;br&gt;
Oracle Cloud VM&lt;br&gt;
Linux + systemd&lt;/p&gt;

&lt;p&gt;I intentionally avoided adding too many services in the beginning.&lt;/p&gt;

&lt;p&gt;A small product should be easy to understand, deploy, monitor, and maintain.&lt;/p&gt;

&lt;p&gt;☕ Why Spring Boot?&lt;/p&gt;

&lt;p&gt;I've worked with Android and mobile SDKs for many years, but I wanted the PlayLaunch backend to follow a clean backend architecture.&lt;/p&gt;

&lt;p&gt;Spring Boot was a natural choice.&lt;/p&gt;

&lt;p&gt;It gives me:&lt;/p&gt;

&lt;p&gt;REST API development&lt;br&gt;
Dependency injection&lt;br&gt;
Security integration&lt;br&gt;
Database integration&lt;br&gt;
Production-ready configuration&lt;br&gt;
Easy deployment&lt;br&gt;
A mature ecosystem&lt;/p&gt;

&lt;p&gt;The initial application started with a simple endpoint and gradually evolved into a proper backend structure.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;@RestController&lt;br&gt;
@RequestMapping("/api")&lt;br&gt;
public class HelloController {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@GetMapping("/hello")
public String hello() {
    return "Hello from PlayLaunch!";
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;Starting small helped me validate the deployment pipeline before building more complicated functionality.&lt;/p&gt;

&lt;p&gt;🗄️ PostgreSQL as the Database&lt;/p&gt;

&lt;p&gt;For persistent data, I'm using PostgreSQL.&lt;/p&gt;

&lt;p&gt;The initial database setup looks conceptually like this:&lt;/p&gt;

&lt;p&gt;PlayLaunch&lt;br&gt;
    |&lt;br&gt;
    +-- Users&lt;br&gt;
    |&lt;br&gt;
    +-- Products&lt;br&gt;
    |&lt;br&gt;
    +-- Categories&lt;br&gt;
    |&lt;br&gt;
    +-- Launches&lt;br&gt;
    |&lt;br&gt;
    +-- Comments&lt;br&gt;
    |&lt;br&gt;
    +-- Votes / Engagement&lt;/p&gt;

&lt;p&gt;The goal is to keep the data model flexible enough to support new product and community features later.&lt;/p&gt;

&lt;p&gt;I also prefer PostgreSQL because it gives me a strong relational foundation without forcing the application into a complicated architecture.&lt;/p&gt;

&lt;p&gt;🔐 Authentication&lt;/p&gt;

&lt;p&gt;Authentication is another important part of PlayLaunch.&lt;/p&gt;

&lt;p&gt;The plan is to support modern authentication flows, including Google sign-in, followed by secure session/token handling.&lt;/p&gt;

&lt;p&gt;The backend follows a structure similar to:&lt;/p&gt;

&lt;p&gt;Client&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Authentication API&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Spring Security&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Authentication Service&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
User Repository&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
PostgreSQL&lt;/p&gt;

&lt;p&gt;Keeping authentication logic separated from controllers makes the application easier to maintain as the project grows.&lt;/p&gt;

&lt;p&gt;☁️ Deploying on Oracle Cloud&lt;/p&gt;

&lt;p&gt;One of the more interesting parts of the project was deploying the Spring Boot application on a cloud VM.&lt;/p&gt;

&lt;p&gt;The backend runs on an Oracle Cloud VM.&lt;/p&gt;

&lt;p&gt;The deployment flow is roughly:&lt;/p&gt;

&lt;p&gt;Developer&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Git Repository&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Build Spring Boot JAR&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Oracle Cloud VM&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
systemd&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
Spring Boot&lt;br&gt;
   |&lt;br&gt;
   v&lt;br&gt;
PostgreSQL&lt;/p&gt;

&lt;p&gt;I also configured the application as a systemd service.&lt;/p&gt;

&lt;p&gt;This means the backend can run as a proper Linux service instead of manually starting the JAR every time.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;playlaunch.service&lt;br&gt;
        |&lt;br&gt;
        v&lt;br&gt;
Spring Boot Application&lt;br&gt;
        |&lt;br&gt;
        v&lt;br&gt;
Port 8080&lt;/p&gt;

&lt;p&gt;This was a good reminder that building software isn't only about writing application code.&lt;/p&gt;

&lt;p&gt;Deployment, networking, security rules, logs, processes, and database configuration are equally important.&lt;/p&gt;

&lt;p&gt;🧩 One Lesson: Start With a Small Architecture&lt;/p&gt;

&lt;p&gt;When starting a new project, it is tempting to immediately introduce:&lt;/p&gt;

&lt;p&gt;Microservices&lt;br&gt;
Kubernetes&lt;br&gt;
Multiple databases&lt;br&gt;
Message queues&lt;br&gt;
Complex CI/CD&lt;br&gt;
Several cloud services&lt;/p&gt;

&lt;p&gt;But not every product needs all of that.&lt;/p&gt;

&lt;p&gt;For PlayLaunch, I started with:&lt;/p&gt;

&lt;p&gt;One backend + one database + one VM.&lt;/p&gt;

&lt;p&gt;That gives me a much smaller operational surface.&lt;/p&gt;

&lt;p&gt;If the product grows enough to require more infrastructure, I can introduce it based on actual requirements.&lt;/p&gt;

&lt;p&gt;Not theoretical requirements.&lt;/p&gt;

&lt;p&gt;🛠️ Building the MVP&lt;/p&gt;

&lt;p&gt;The first goal isn't to build every possible feature.&lt;/p&gt;

&lt;p&gt;The goal is to get the core workflow working.&lt;/p&gt;

&lt;p&gt;For PlayLaunch, that means:&lt;/p&gt;

&lt;p&gt;Create Account&lt;br&gt;
      ↓&lt;br&gt;
Create Product&lt;br&gt;
      ↓&lt;br&gt;
Publish Launch&lt;br&gt;
      ↓&lt;br&gt;
Product Discovery&lt;br&gt;
      ↓&lt;br&gt;
Community Engagement&lt;br&gt;
      ↓&lt;br&gt;
Feedback&lt;/p&gt;

&lt;p&gt;Everything else can evolve around this workflow.&lt;/p&gt;

&lt;p&gt;This approach also makes it easier to identify which features actually provide value.&lt;/p&gt;

&lt;p&gt;📈 What I'm Trying to Solve&lt;/p&gt;

&lt;p&gt;There are thousands of developers building apps, SaaS products, open-source projects, and side projects.&lt;/p&gt;

&lt;p&gt;But launching is still fragmented.&lt;/p&gt;

&lt;p&gt;You might use one platform for social promotion, another for feedback, another for discovery, and another for tracking your launch.&lt;/p&gt;

&lt;p&gt;The bigger idea behind PlayLaunch is to bring more of that experience together.&lt;/p&gt;

&lt;p&gt;Not by trying to build everything at once, but by gradually improving the launch workflow.&lt;/p&gt;

&lt;p&gt;💡 What I Learned&lt;/p&gt;

&lt;p&gt;Building PlayLaunch has reinforced a few lessons for me.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Simple architecture is powerful&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A small, understandable system is easier to debug and deploy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deployment is part of development&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Getting a Spring Boot application running locally is easy.&lt;/p&gt;

&lt;p&gt;Getting it reliably running on a cloud VM involves a completely different set of problems.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build for the first user, not the millionth&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Scalability matters, but premature scalability can slow down development.&lt;/p&gt;

&lt;p&gt;First prove that people actually want the product.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Feedback is more valuable than assumptions&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The product will ultimately be shaped by how developers and makers use it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launching is itself a product problem&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Building something doesn't automatically mean people will discover it.&lt;/p&gt;

&lt;p&gt;Distribution, discovery, feedback, and community matter just as much as the code.&lt;/p&gt;

&lt;p&gt;🚀 What's Next for PlayLaunch?&lt;/p&gt;

&lt;p&gt;I'm continuing to improve the platform around the core launch workflow.&lt;/p&gt;

&lt;p&gt;Some areas I'm exploring include:&lt;/p&gt;

&lt;p&gt;Better product discovery&lt;br&gt;
Categories and search&lt;br&gt;
Product profiles&lt;br&gt;
Community engagement&lt;br&gt;
Launch analytics&lt;br&gt;
Authentication improvements&lt;br&gt;
Better developer experience&lt;br&gt;
More automation around product launches&lt;/p&gt;

&lt;p&gt;The goal is to keep the product simple while making it genuinely useful for builders.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;PlayLaunch started as an idea, but building it has become a practical exercise in product development, backend engineering, cloud deployment, and user-focused iteration.&lt;/p&gt;

&lt;p&gt;The interesting part isn't just writing the Spring Boot APIs.&lt;/p&gt;

&lt;p&gt;It's seeing how all the pieces fit together:&lt;/p&gt;

&lt;p&gt;Code → Infrastructure → Product → Users → Feedback → Iteration&lt;/p&gt;

&lt;p&gt;That's the part of building products that I enjoy the most.&lt;/p&gt;

&lt;p&gt;I'm still building PlayLaunch, and I'll be sharing more technical lessons as the platform evolves.&lt;/p&gt;

&lt;p&gt;If you're also building a product, I'd love to hear what you're working on and what you find most difficult about launching it.&lt;/p&gt;

&lt;p&gt;Build something. Launch it. Learn from users. Repeat. 🚀&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>postgres</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How We Help Android Developers Navigate Google Play Closed Testing</title>
      <dc:creator>Amit Gupta</dc:creator>
      <pubDate>Sat, 25 Jul 2026 10:39:37 +0000</pubDate>
      <link>https://dev.to/amitguptaappschance/how-we-help-android-developers-navigate-google-play-closed-testing-57e</link>
      <guid>https://dev.to/amitguptaappschance/how-we-help-android-developers-navigate-google-play-closed-testing-57e</guid>
      <description>&lt;p&gt;Publishing an Android app on Google Play has become more challenging than simply uploading an App Bundle.&lt;/p&gt;

&lt;p&gt;For many new developers, the biggest hurdle is meeting Google Play's closed testing requirements before production access. Finding reliable testers, collecting meaningful feedback, and completing the testing period can be time-consuming—especially for indie developers and small teams.&lt;/p&gt;

&lt;p&gt;This challenge inspired the creation of PlayLaunch, a platform focused on making the closed testing process more structured and developer-friendly.&lt;/p&gt;

&lt;p&gt;What PlayLaunch Offers&lt;br&gt;
Real Android testers&lt;br&gt;
Continuous testing during the required testing period&lt;br&gt;
Structured feedback from testers&lt;br&gt;
A simple dashboard to manage your testing campaign&lt;br&gt;
Support for developers preparing for Google Play production access&lt;br&gt;
Why Real Testing Matters&lt;/p&gt;

&lt;p&gt;Closed testing isn't just about meeting a requirement. It gives developers an opportunity to:&lt;/p&gt;

&lt;p&gt;Discover issues before launch&lt;br&gt;
Improve app stability&lt;br&gt;
Validate the user experience&lt;br&gt;
Gather genuine feedback from real devices&lt;/p&gt;

&lt;p&gt;The result is often a better-quality app before it reaches a wider audience.&lt;/p&gt;

&lt;p&gt;Lessons We've Learned&lt;/p&gt;

&lt;p&gt;Working with Android developers has highlighted a few common patterns:&lt;/p&gt;

&lt;p&gt;Many developers wait until the last minute to plan testing.&lt;br&gt;
Clear onboarding instructions improve tester participation.&lt;br&gt;
Actionable feedback is far more valuable than simply collecting installs.&lt;br&gt;
Final Thoughts&lt;/p&gt;

&lt;p&gt;Whether you're publishing your first Android app or your tenth, planning your testing strategy early can save time and reduce stress during the release process.&lt;/p&gt;

&lt;p&gt;If you're interested in learning more about PlayLaunch and how it supports Android developers during closed testing, visit:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://playlaunch.appschance.com" rel="noopener noreferrer"&gt;https://playlaunch.appschance.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love to hear how you're approaching Google Play's closed testing process. What has been your biggest challenge so far?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>android</category>
      <category>software</category>
      <category>testing</category>
    </item>
  </channel>
</rss>
