ASCII wireframes are a simple, text-based method of creating visual layouts and user interface mockups using only keyboard characters. This document serves as a guide for implementing ASCII wireframes in your development workflow.
ASCII wireframes use basic characters like:
|(pipes) for vertical lines-(dashes) for horizontal lines+(plus signs) for corners[ ](brackets) for buttons___(underscores) for input fields#or*for content areas
+---------------------------+
| Header |
+---------------------------+
| [Menu] [About] [Contact] |
+---------------------------+
| |
| Main Content Area |
| |
| +-------------------+ |
| | Sidebar | |
| | | |
| +-------------------+ |
| |
+---------------------------+
| Footer |
+---------------------------+
- No special software needed - just any text editor
- Create wireframes in seconds, not minutes
- Perfect for quick brainstorming sessions
- Can be done during calls or meetings
- Forces you to think about layout and functionality first
- Removes distractions of colors, fonts, and visual design
- Helps stakeholders focus on content and flow rather than visual details
- Plain text files work perfectly with Git
- Easy to see changes in diffs
- Can be included directly in documentation
- Searchable and lightweight
- Works on any device or platform
- Can be shared via email, chat, or comments
- No proprietary file formats
- Screen reader friendly
User Story: As a user, I want to login to access my dashboard
+------------------------+
| Login Page |
+------------------------+
| Email: [____________] |
| Pass: [____________] |
| |
| [Login Button] |
| |
| [Forgot Password?] |
+------------------------+
Before writing code, quickly sketch the component structure:
Dashboard Component
+----------------------------------+
| Header: [Logo] [Nav] [User Menu] |
+----------------------------------+
| Sidebar | Main Content |
| +--------+ | +------------------+|
| |Nav | | | Widget 1 ||
| |Items | | +------------------+|
| | | | | Widget 2 ||
| +--------+ | +------------------+|
+----------------------------------+
Map out data flow and component relationships:
Frontend API Database
+----------+ +-------+ +-----------+
| Login | --> | /auth | -----> | users |
| Form | +-------+ | table |
+----------+ +-----------+
|
v
+----------+ +-------+ +-----------+
|Dashboard | --> | /user | -----> | user_data |
|Component | | /data | | table |
+----------+ +-------+ +-----------+
Mobile View:
+-------------+
| Header |
+-------------+
| [☰ Menu] |
+-------------+
| |
| Content |
| |
+-------------+
Desktop View:
+----------------------------------------+
| Header |
+----------------------------------------+
| Menu | Main Content | Sidebar |
| | | |
| | | |
+----------------------------------------+
Contact Form:
+---------------------------+
| Name: [____________] |
| Email: [____________] |
| Subject: [____________] |
| Message: |
| +---------------------+ |
| | | |
| | | |
| | | |
| +---------------------+ |
| |
| [Submit] [Reset] |
+---------------------------+
User Management:
+------+---------------+----------+--------+
| ID | Name | Email | Action |
+------+---------------+----------+--------+
| 001 | John Doe | j@doe... | [Edit] |
| 002 | Jane Smith | j@smi... | [Edit] |
| 003 | Bob Johnson | b@joh... | [Edit] |
+------+---------------+----------+--------+
| [<Prev] Page 1 of 5 [Next>] |
+------------------------------------+
- Begin with basic boxes and labels
- Add detail gradually
- Don't try to make it "pretty" - focus on functionality
Conventions:
[ ] = Button
___ = Input field
||| = List items
+++ = Important sections
*** = Content areas
+------------------+
| Search Results | <-- Page title
+------------------+
| [Filter] [Sort] | <-- Action bar
+------------------+
| * Result 1 | <-- Dynamic content
| * Result 2 | (populated from API)
| * Result 3 |
+------------------+
| [Load More] | <-- Pagination
+------------------+
Always consider how your layout adapts:
Desktop: [Header] [Nav] [Main] [Sidebar]
Tablet: [Header] [Nav] [Main + Sidebar]
Mobile: [Header]
[☰ Nav]
[Main]
[Sidebar below]
Use ASCII When:
- Quick brainstorming or concept validation
- Documenting technical architecture
- Planning component structure
- Working in text-based environments
- Need to include wireframes in code comments
Use Other Tools When:
- Presenting to non-technical stakeholders
- Need precise visual specifications
- Creating detailed UI specifications
- Planning complex interactions or animations
/**
* UserProfile Component Layout:
* +------------------------+
* | [Avatar] Name |
* | Email |
* | [Edit Button] |
* +------------------------+
*/
function UserProfile({ user }) {
// Implementation here
}ASCII wireframes work great in README files, technical specs, and planning documents.
Perfect for GitHub issues, Jira tickets, or bug reports to quickly show expected vs actual layout.
This approach aligns with the Organized Codebase methodology by:
- Rapid Prototyping: Quick visualization without tool overhead
- Documentation First: ASCII wireframes serve as living documentation
- Version Control: Plain text integrates seamlessly with Git workflows
- Accessibility: Universal format readable by all team members
- Focus on Structure: Emphasizes architectural thinking over visual design
When using Claude Code for development, include ASCII wireframes in your prompts:
claude --dangerously-skip-permissionsExample prompt structure:
Please implement this component based on the following ASCII wireframe:
+------------------------+
| [Avatar] Name |
| Email |
| [Edit Button] |
+------------------------+
Requirements:
- Responsive design
- Accessible markup
- Clean, semantic HTML
This document is part of the Organized Codebase methodology for structured development workflows.