Apollo is an experimental text editor written from scratch in C for Windows.
The project is focused on editor architecture, rendering, text layout, and systems programming rather than wrapping an existing GUI text control. It is not production-ready yet, but it already includes the core pieces of a custom editor stack: file-backed buffers, editing commands, multi-cursor state, fuzzy search, font rasterization, table-driven theming, and a D3D11 renderer backend.
Apollo is under active development and should be treated as a personal systems project, not a finished daily editor.
Current priorities:
- Stabilize the buffer/edit model
- Improve UTF-8 handling
- Replace the flat text buffer with a more scalable representation
- Expand automated tests
- Polish the public build/demo workflow
- From-scratch C codebase with a small platform abstraction layer
- Win32 windowing, input, file dialogs, clipboard, timing, and filesystem support
- D3D11-based renderer abstraction
- Font loading, TTF rasterization, glyph atlas pages, and raster cache
- Text layout and viewport caching for visible editor lines
- File-backed buffers with save-state tracking
- Cursor movement, selection, clipboard operations, undo/redo, and multi-cursor state
- Fuzzy search providers for commands, buffers, files, and unsaved buffers
- Table-based configuration format used for theme data
- Toggleable editor UI elements such as status bar and gutter
Apollo is organized into small modules under src/:
base/- core types, strings, arenas, math, colors, paths, logging, profilingos/- Windows platform layer for windows, input, memory, files, time, and dialogsrenderer/- GPU resource model and D3D11 backendfonts/- TTF loading/rasterization and glyph cachetext/- text layout, render runs, and viewport cachebuffer/- buffer identity, file loading/saving, revisions, line indexing, undo dataedit/- editor commands, cursor state, selections, clipboard, undo/redo integrationviews/- editor layout, scrolling, gutter/status UI, and active view statesearch/- fuzzy-search UI and provider modeltable/andtheme/- table parser/runtime and theme loading
See docs/architecture.md for more detail.
Requirements:
- Windows
clang-cl- Windows SDK
From the repository root:
build.batThe build script currently produces apollo.exe in the repository root. Generated executables, debug symbols, Visual Studio metadata, and common build output directories are ignored by Git.
After building:
apollo.exeThe editor currently opens the guided demo file under data/demo/demo.txt by default.
- Windows-only
- Debug/development build workflow
- The buffer is currently a flat byte buffer with full line rescans
- UTF-8 support exists in parts of the stack but is not complete everywhere
- Automated test coverage is still growing
- Some systems still use fixed-size global arrays while the architecture settles
- Large-file editing is not a primary goal yet
- Replace the flat buffer with a piece table, gap buffer, or similar editor-friendly representation
- Add focused tests for buffer operations, undo/redo, search ranking, and text movement
- Improve Unicode correctness and text navigation
- Expand syntax highlighting through the plugin/lexer path
- Improve save/reload conflict handling
- Add a short demo recording for the public repository
Apollo is licensed under the terms in LICENSE.
