Startup

Week 3: Our First User Made Me Realize Everything Was Wrong

Got our first real user. They broke everything in 5 minutes. Here's how one developer's feedback changed CodeContext completely.

Yonas Valentin Kristensen
CEO & Founder
January 21, 20255 min read

Monday, January 15th - 9:23 AM

Big milestone - pushed CodeContext to npm!

$ npm publish codecontext-cli
+ codecontext-cli@0.0.1

$ npm install -g codecontext-cli
/usr/local/bin/codecontext -> /usr/local/lib/node_modules/codecontext-cli/bin/codecontext

$ codecontext --version
0.0.1

WE'RE LIVE! 🚀

Celebrated with Isabella and Mango. Well, I celebrated. Isabella smiled politely. Mango ate a sock.

Monday, January 15th - 2:47 PM

Posted on Reddit: "I built a CLI that generates documentation automatically"

First comment: "Another documentation tool? 🙄"

Second comment: "Looks interesting, trying it now..."

Third comment: "This is exactly what I needed!"

Refreshing Reddit every 30 seconds. This is healthy, right?

Tuesday, January 16th - 10:15 AM

FIRST REAL USER!

Someone named Alex from Berlin DMed me:

"Hey, tried CodeContext on our codebase. Love the idea but... it's not working great. Mind if I share some feedback?"

My response: "YES PLEASE DESTROY ME" (but professionally)

Tuesday, January 16th - 4:30 PM

Alex's feedback was... brutal. But exactly what I needed.

Their codebase:

// What CodeContext generated:
/**
 * Handles the request
 * @param req - The request
 * @param res - The response
 */
export const handleData = withValidation(
  withCache(
    withLogger(
      async (req: Request, res: Response) => {
        const input = await parseAndValidate(req.body);
        const output = await transformData(input);
        return sendResponse(res, output);
      }
    )
  )
);

// What it SHOULD have generated:
/**
 * Handles incoming API requests for data transformation
 * 
 * @description
 * Processes validated requests with caching and logging.
 * Parses input data, applies transformation logic,
 * and returns formatted responses.
 * 
 * Middleware stack:
 * 1. withValidation - Validates request schema
 * 2. withCache - Caches results for 5 minutes
 * 3. withLogger - Logs to monitoring service
 * 
 * @param {Request} req - Express request object
 * @param {Response} res - Express response object
 * 
 * @returns {Promise<void>} Sends JSON response
 * 
 * @example
 * POST /api/transform
 * Body: { data: [...], format: "json" }
 * 
 * @throws {ValidationError} If request body is invalid
 * @throws {ParseError} If data format is incorrect
 */

Alex was right. CodeContext was generating documentation, but not understanding the code.

Wednesday, January 17th - 3:00 AM

Couldn't sleep. Completely rewrote the context engine:

// Version 1: Naive approach
function analyzeFunction(node: FunctionNode) {
  return {
    name: node.name,
    params: node.params,
    returns: guessReturnType(node)
  };
}

// Version 2: Context-aware approach
function analyzeFunction(node: FunctionNode, context: CodeContext) {
  // Look at imports
  const imports = context.findImports();
  
  // Analyze middleware/decorators
  const wrappers = extractWrappers(node);
  
  // Check call sites
  const usages = context.findUsages(node.name);
  
  // Read related files
  const relatedCode = context.getRelatedCode(node);
  
  // NOW generate documentation
  return generateSmartDocs(node, {
    imports,
    wrappers,
    usages,
    relatedCode
  });
}

The difference was night and day.

Wednesday, January 17th - 6:45 PM

Isabella: "Have you eaten today?"

Me: "Coffee has calories."

Isabella: "That's not food."

Me: "Coffee is bean soup."

Isabella: Takes away laptop "Dinner. Now."

Mango: Wags tail, has definitely eaten my shoe

Ready to save 30+ hours monthly?

Get early access to CodeContext during our alpha phase.

Thursday, January 18th - 11:30 AM

Sent Alex the new version:

$ codecontext generate --context-aware

Analyzing codebase structure...
✓ Found 12 middleware functions
✓ Detected Express.js patterns
✓ Identified 3 service layers
✓ Mapped 47 API endpoints

Generating contextual documentation...
✓ Generated docs for 312 functions
✓ Added 89 code examples
✓ Linked 156 related functions
✓ Created 15 architecture diagrams

Documentation quality score: 94/100 ⭐

Alex's response: "Holy shit. This is incredible."

I may have cried a little.

Friday, January 19th - 2:00 PM

More feedback rolling in:

Sarah (Frontend Dev): "Can it handle React components?"

Marcus (DevOps): "What about Docker configs?"

Priya (Team Lead): "We need it to understand our custom framework"

Current supported formats: JavaScript

Formats requested: Everything

Time to pivot from "JavaScript documentation tool" to "Universal documentation engine"

Saturday, January 20th - 5:00 AM

Built a plugin system:

// Core engine
interface DocumentationPlugin {
  name: string;
  filePatterns: string[];
  parse(file: File): AST;
  analyze(ast: AST, context: Context): Analysis;
  generate(analysis: Analysis): Documentation;
}

// React plugin
const reactPlugin: DocumentationPlugin = {
  name: 'react',
  filePatterns: ['**/*.jsx', '**/*.tsx'],
  parse: (file) => parseJSX(file),
  analyze: (ast, context) => {
    // Understand props, state, hooks
    // Analyze component hierarchy
    // Detect patterns
  },
  generate: (analysis) => {
    // Generate component documentation
    // Include usage examples
    // Add Storybook integration
  }
};

// Now CodeContext is extensible!

Sunday, January 21st - 9:00 PM

Week 3 stats:

Users:

  • NPM downloads: 847
  • GitHub stars: 124
  • Active users: ~50
  • Angry users: 3
  • Happy users: 47
  • Users named Alex who changed everything: 1

Code improvements:

- Simple AST parsing
+ Context-aware analysis

- JavaScript only
+ Plugin architecture

- Basic documentation
+ Smart documentation with examples

- "It works"
+ "It actually helps"

Personal stats:

  • Coffee consumed: 127 cups
  • Times Isabella saved me from starvation: 12
  • Shoes destroyed by Mango: 3
  • Hours of sleep: Still not enough
  • Motivation level: 🚀🚀🚀🚀🚀

Biggest lesson:

Your first user will show you everything that's wrong with your product. And that's the best gift they can give you.

Alex from Berlin, if you're reading this - thank you. You turned CodeContext from a neat idea into something actually useful.

What's Next:

Week 4 goals:

  1. Launch plugin marketplace
  2. Add support for 5 more languages
  3. Build VS Code extension
  4. Remember to walk Mango
  5. Stop living on coffee

Isabella just looked over my shoulder and said: "You forgot 'spend time with girlfriend' on that list."

She's right. Again.

Be Our Next Alex

Try CodeContext and tell us everything we're doing wrong. Seriously, we need your feedback.

Free forever for individuals. Team plans available.


Building in public is terrifying and amazing. Follow the journey: @yonasvalentin

Related Posts

Ready to transform your documentation?

Stop dreading documentation. Let AI handle the tedious parts while you ship features.

Get Started Free