Three-Column Layout
The editor is organized into three main columns, each serving a distinct purpose:Sections Column
Browse and manage all available README sections
Editor Column
Edit your selected section’s markdown content
Preview Column
See your README rendered in real-time
Sections Column
The left column displays all available README sections organized alphabetically. From here, you can:- Add sections by clicking any available section template
- Reorder sections using drag-and-drop
- Search sections using the search filter (implemented in
SectionFilter.js:1) - Create custom sections with the “Add Custom Section” button
- Reset all sections using the reset button in the header
The sections you select are automatically saved to your browser’s local storage, so your work persists across sessions.
Editor Column
The middle column provides a powerful editing experience powered by the Monaco Editor (the same editor that powers VS Code):- Desktop
- Mobile
On desktop, you get the full Monaco Editor experience with:
- Syntax highlighting for markdown
- Dark theme by default (
vs-darktheme inEditorColumn.js:64) - Word wrap enabled for better readability
- No minimap for a cleaner interface
- No line numbers to maximize writing space
Preview Column
The right column shows a live preview of your README with two view modes:Preview Mode
Preview Mode
Renders your markdown content exactly as it will appear on GitHub, with support for:
- GitHub Flavored Markdown (using
remark-gfmplugin) - Tables, task lists, and strikethrough text
- Images and badges
- Code blocks with syntax highlighting
- All links open in a new tab automatically
Raw Mode
Raw Mode
Shows the raw markdown source code, useful for:
- Copying markdown to paste elsewhere
- Verifying exact formatting
- Troubleshooting rendering issues
Drag-and-Drop Functionality
Readme.so uses the@dnd-kit library to provide smooth drag-and-drop section reordering.
How to Reorder Sections
- Click and hold any selected section in the Sections column
- Drag it up or down to your desired position
- Release to drop it in place
- Vertical axis restriction - sections can only move up/down (implemented with
restrictToVerticalAxismodifier inSectionsColumn.js:10) - Touch support - works on mobile devices with touch sensors
- Keyboard support - use keyboard shortcuts for accessibility
- Visual feedback - clear indication of where the section will be placed
Your section order is automatically saved as you reorder them. The changes persist in your browser’s local storage.
Monaco Editor Features
The Monaco Editor provides advanced editing capabilities available on desktop:Key Features
| Feature | Description |
|---|---|
| Auto-indentation | Maintains consistent indentation as you type |
| Markdown syntax | Highlights markdown syntax for better readability |
| Find and replace | Use Ctrl+F (or Cmd+F on Mac) to search within the editor |
| Multi-cursor editing | Hold Alt and click to add multiple cursors |
| Line manipulation | Use Alt+Up/Down to move lines up or down |
Editor Configuration
The Monaco Editor is configured with these options (fromEditorColumn.js:87-92):
Mobile Experience
On mobile devices, the interface adapts to provide an optimal touch experience:Tab Navigation
Instead of showing all three columns simultaneously, mobile users navigate between tabs:
The active tab is managed by the
Tabs component (implemented in Tabs.js) and automatically defaults to the Editor tab on mobile devices.
Responsive Design
The interface automatically adjusts based on your screen size:- Desktop (md and above): All three columns visible simultaneously
- Mobile: Tab-based navigation with full-screen views
- Breakpoint: The
mdbreakpoint (typically 768px) determines the layout switch
EditPreviewContainer.js:42-101.
Auto-Save Functionality
Every edit you make is automatically saved to your browser’s local storage through theuseLocalStorage hook:
Your work is continuously backed up as you type. If you accidentally close your browser or navigate away, your progress will be restored when you return.
- All section content and edits
- Selected sections list
- Section order
- Currently focused section