Before writing code, I stepped into the role that most developers skip — Product Owner. This phase was about defining what to build, for whom, and why.
🔗 Project Repository:
https://github.com/imsushant12/sushantgaurav-portfolio
Why Phase-1 Exists (And Why Most Projects Fail Without It)
After completing Phase-0 (Infrastructure & Setup), the project was technically ready — but not directionally ready.
Most side projects fail because:
- requirements are vague
- scope keeps changing
- features are added randomly
- no one knows what “done” means
So instead of writing code next, I paused and asked:
If this were a real product, what problem does it solve? Who is it for? What is in scope — and what is not?
That’s where Phase-1: Requirement Gathering & PRD begins.
Phase-1 Objective
The goal of this phase was simple but critical:
- Define what I am building
- Define who it is for
- Define what NOT to build
- Create a single source of truth (PRD)
- Lock scope before development begins
No UI.
No backend.
No APIs.
Only clarity.
Step 0: Moving Phase-1 on the Kanban Board
Before doing any work, I moved Phase-1 from:
Todo → In Progress
This might look trivial, but it reinforces an important habit:
Every phase should be visible, trackable, and intentional.
It also maintains continuity across the project timeline.
Step 1: Creating the PRD (Product Requirement Document)
Instead of jumping into code, I created a proper PRD (Product Requirement Document) inside the repository.
This document acts as:
- the product blueprint
- the decision reference
- the scope controller
- the alignment document
Even for solo projects, this is extremely powerful.
Step 2: Structuring the PRD
I didn’t dump ideas randomly.
The PRD was structured into clear, logical sections, just like in real product teams.
1. Target Audience
This section answers a critical question:
Who is this portfolio actually for?
Instead of saying “everyone”, I clearly defined:
- recruiters and hiring managers
- engineers reviewing technical depth
- open-source collaborators
- developers evaluating architectural decisions
This helped shape:
- UI tone
- content depth
- feature prioritisation
- technical complexity
Without this clarity, portfolios become unfocused very quickly.
2. Core Features & MVP Scope
Here I defined:
- what the portfolio must have
- what it can have later
- what it will not include
This is where most developers fail — they keep adding features endlessly.
I intentionally separated:
- MVP features (must be present)
- Nice-to-haves
- Out-of-scope ideas
This prevents:
- scope creep
- overengineering
- wasted time
It also makes future decisions easier:
“Does this belong to MVP or later?”
3. User Journey & Flow
This was one of the most important parts of Phase-1.
Instead of thinking like a developer, I thought like a user:
- How does someone land on the site?
- What do they see first?
- What actions can they take?
- How do they navigate?
- Where do they leave?
This helped define:
- page structure
- navigation flow
- content ordering
- API requirements later on
Even a basic flow diagram clarifies decisions that otherwise become messy during development.
4. Technical Overview
Only after defining what to build did I define how to build it.
This section documents:
- frontend tech stack
- backend stack
- API communication approach
- deployment expectations
- testing strategy (high-level)
Not implementation — just direction.
This ensured:
- consistency in later phases
- fewer architectural changes
- easier debugging later
Step 3: Reviewing & Finalizing the PRD
Once the PRD was written, I reviewed it as if:
- I were a teammate joining the project
- I had to build this without asking questions
- I had to maintain it 6 months later
If something was unclear, it was refined.
Only after that did I consider the phase complete.
Step 4: Committing the PRD to GitHub
Once finalized:
- PRD was committed
- Changes were pushed
- Pull Request was created
- PR was reviewed and merged
- Related issue was closed
This maintains:
- clean history
- traceability
- proper workflow discipline
Step 5: Updating the Kanban Board
After merging:
- Phase-1 issue was marked Done
- Next phase was moved from Todo → In Progress
This keeps the project timeline honest and visible.
Validating the PRD Like a Real Product Owner
Once the PRD was drafted, I didn’t treat it as "done".
Instead, I reviewed it with three different lenses:
As a Developer
Could I implement this without guessing?
- Are features clearly defined?
- Are responsibilities separated?
- Are edge cases obvious?
- Would I need to ask questions later?
If the answer was yes, the PRD needed refinement.
As a Product Owner
Does this actually make sense as a product?
- Is the scope realistic?
- Is anything unnecessary for an MVP?
- Does every feature solve a real problem?
- Does it align with the target audience?
This helped eliminate:
- overengineering
- unnecessary features
- premature optimizations
As a Future Maintainer
This is the lens most people ignore.
I asked:
- Would I understand this 3 months later?
- Would another developer understand it?
- Are assumptions clearly written?
If the answer was "maybe", I clarified it in the PRD.
This mindset alone dramatically improves long-term project quality.
Locking the Scope (One of the Most Important Steps)
Once the PRD was reviewed, I locked the scope.
This means:
- No new features unless justified
- No random additions
- No scope creep
- No "I’ll add this quickly"
Why this matters:
Most side projects fail not due to lack of skill, but because the scope keeps expanding until motivation dies.
Locking scope creates:
- focus
- momentum
- clarity
- faster execution
Committing the PRD (Treating Docs as Code)
After finalising everything, I committed the PRD like any other feature.
This included:
- meaningful commit message
- clean diff
- PR linked to the issue
- review before merge
This reinforces an important idea:
Documentation is not secondary.
It is part of the product.
Closing the Issue & Updating the Board
Once merged:
✔ Issue was closed
✔ Phase marked complete
✔ Next phase moved to In Progress
✔ Project timeline updated
This step might feel ceremonial, but it builds discipline and continuity across phases.
What Phase-1 Actually Achieved
By the end of this phase, I had:
- [x] A clearly defined product
- [x] A locked MVP scope
- [x] A structured PRD
- [x] Documented assumptions
- [x] A clean decision trail
- [x] Zero ambiguity for development
No code yet — but everything needed to start coding properly.
Why This Phase Matters (Especially for Portfolios)
Most portfolios fail because:
- features are random
- projects lack direction
- decisions aren’t documented
- scope keeps changing
- reviewers can’t understand intent
This phase fixes all of that.
It shows:
- product thinking
- planning skills
- engineering maturity
- ability to work like a professional
Which is exactly what recruiters and senior engineers look for.
Transition to Phase-2
With infrastructure ready
and requirements finalized
Phase-2 begins: System Setup & Initial Implementation
This is where:
- frontend and backend initialization starts
- architectural decisions become code
- testing and structure begin to matter
And now — we build with clarity.
What’s Next?
In Phase-2, I’ll cover:
- Initial backend setup
- Frontend bootstrapping
- Project configuration
- Early architectural decisions
- How everything connects together


Top comments (0)