J-mom is a JSON pretty print utility built with the Kobweb framework (a Kotlin web framework). The application provides a web interface where users can:
- Paste or type JSON data in a text area
- Validate the JSON to check if it's valid
- See formatted (pretty-printed) JSON with configurable indentation (planned feature)
- Use advanced editor features like syntax highlighting, line numbers, and collapsible sections (planned feature)
This project is being vibe coded with a lot of patience and JetBrains Junie.
/site/- Main project directory containing the Kobweb application/src/jsMain/- Main source code/kotlin/dev/sjaramillo/jmom/- Application code/components/- Reusable UI components/pages/- Page definitions (including Index.kt with the main UI)/utils/- Utility functions (including JsonValidator.kt)
/src/jsTest/- Test code/kotlin/dev/sjaramillo/jmom/utils/- Tests for utility functions
The project is being implemented in phases. The progress can be found in the requirements.md file.
- When implementing new features or fixing bugs, always run the relevant tests to ensure functionality works as expected
- Tests can be run using Gradle tasks:
./gradlew jsNodeTest- Run all JS tests in a NodeJS environment (recommended for unit tests)./gradlew jsBrowserTest- Run all JS tests in a browser environment (requires browser installation)./gradlew jsTest- Run all JS tests (both NodeJS and browser tests)./gradlew allTests- Run all tests and create an aggregated report
- Add new tests for any new functionality or edge cases
First, run the development server by typing the following command in a terminal under the site folder:
$ cd site
$ kobweb runOpen http://localhost:8080 with your browser to see the result.
You can use any editor you want for the project, but we recommend using IntelliJ IDEA Community Edition downloaded using the Toolbox App.
Press Q in the terminal to gracefully stop the server.
While Kobweb is running, feel free to modify the code! When you make any changes, Kobweb will notice this automatically, and the site will indicate the status of the build and automatically reload when ready.