{"id":17992908,"url":"https://github.com/leostera/sexplib-melange","last_synced_at":"2025-04-04T04:46:02.123Z","repository":{"id":232490082,"uuid":"741972454","full_name":"leostera/sexplib-melange","owner":"leostera","description":null,"archived":false,"fork":false,"pushed_at":"2024-01-11T13:51:38.000Z","size":23,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T16:16:44.820Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leostera.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-11T13:51:31.000Z","updated_at":"2024-01-11T13:53:13.000Z","dependencies_parsed_at":"2024-04-10T02:20:39.391Z","dependency_job_id":"93466a95-cb53-4818-9218-43c202ac055a","html_url":"https://github.com/leostera/sexplib-melange","commit_stats":null,"previous_names":["leostera/sexplib-melange"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leostera%2Fsexplib-melange","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leostera%2Fsexplib-melange/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leostera%2Fsexplib-melange/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leostera%2Fsexplib-melange/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leostera","download_url":"https://codeload.github.com/leostera/sexplib-melange/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247123099,"owners_count":20887259,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-29T20:09:36.945Z","updated_at":"2025-04-04T04:46:02.105Z","avatar_url":"https://github.com/leostera.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n    sexpression_test\u003c/br\u003e\n    \u003cspan style=\"font-size: 1.25rem\"\u003e\n        powered by \n        ✨\u003ca href=\"https://github.com/dmmulroy/create-melange-app\"\u003ecreate-melange-app✨\u003c/a\u003e\n    \u003c/span\u003e\n\u003c/h1\u003e\n\n### Table of Contents\n\n- [Getting Started](#getting-started)\n- [Your project layout](#your-project-layout)\n- [Installing OCaml packages](#installing-OCaml-packages)\n- [Getting Help](#getting-help)\n\n## Getting Started\n\nWelcome to your `Melange` \u0026 `OCaml` app!\n\n### Running your application\n\nTo run your application and start a dev server with hot module reloading, simply\nrun:\n\n```sh\nnpm run dev\n```\n\n### Building your application\n\nBuilding your application is as simple as running:\n\n```sh\nnpm run build\n```\n\nThis will handle running `Melange`'s build process and bundling your application\nwith `Vite`. Your bundled application and output will be located in `./dist`\nafter the build process completes.\n\n## Your project layout\n\nThe following is a high level view of your project and application.\nMany of these files will contain additional comments, explanations, examples,\nand help for learning and getting started with `OCaml` and `Melange.`\n\n```\nsexpression_test\n├── src\n│   │   // This is a React Component and the entry point to your application\n│   ├── App.re\n│   │\n│   │   // This is an example of how you can create additional React Components\n│   ├── Configuration.re\n│   │\n│   │   // This directory is home to your bindings. Bindings are code you'll\n│   │   // write to \"bind\" to and communicate with external JavaScript code.\n│   ├── bindings\n│   │   │\n│   │   │   // This file controls exporting bindings that you write and makes\n│   │   │   // them available to the rest of your project/code\n│   │   ├── bindings.re\n│   │   │\n│   │   │   // This is an example of writing bindings to JavaScript DOM APIs\n│   │   ├── browser.re\n│   │   │\n│   │   │   // This dune file configures your bindings library. In OCaml,\n│   │   │   // each library has its own dune file. Generally, each library is\n│   │   │   // contained in its own directory and is the standard way of\n│   │   │   // organizing your code.\n│   │   └── dune\n│   │\n│   │   // This directory is an example of a OCaml library. It contains\n│   │   // code and modules used to interact with your projects configuration.\n│   ├── create_melange_app\n│   │   │\n│   │   │   // This file controls exporting the modules within the\n│   │   │   // `create_melange_app` library, making them available to the rest\n│   │   │   // of your project/code.\n│   │   ├── create_melange_app.re\n│   │   │\n│   │   │   // These are individual OCaml modules that compose the\n│   │   │   // `create_melange_app` library.\n│   │   ├── node_package_manager.re\n│   │   ├── bundler.re\n│   │   ├── configuration.re\n│   │   │\n│   │   │   // This `dune` file configures the `create_melange_app` library.\n│   │   └── dune\n│   │\n│   │   // This `dune` file configures your root/application library. It wraps\n│   │   // and composes all of the libraries that are used in your application.\n│   │   // When you add new libraries to your project, you will need to add\n│   │   // them to the `libraries` stanza in this file.\n│   └── dune\n│\n│   // This directory is generated by 'Dune', OCaml's build tool.\n│   // It contains compiled files and other artifacts from the build process.\n│   // Note: This is _not_ where your application bundle/output/dist will be.\n├── _build/\n│\n│   // This directory is created by `Opam`, OCaml's package manager. It\n│   // contains your \"local switch\" and packages for your OCaml\n│   // environment, specific to this project. You can think of the `_opam`\n│   // folder and switches as OCaml's `node_modules`.\n├── _opam/\n│\n│   // This is where your applications bundle or output will be located after\n│   // running `npm run build`.\n├── dist/\n│\n│   // This `dune` file configures `Melange`'s build process and settings. In\n│   // addition, it also configures `Vite` to be ran by and integrated with\n│   // `Dune`.\n├── dune\n│\n│   // This file contains the overall configuration for your project, such as\n│   // the name, version, metadata, and dependencies other settings understood\n│   // by `dune`. You can think of this file as OCaml's `package.json`.\n├── dune-project\n│\n│   // This file is generated by `Dune` and should not be manually edited. It\n│   // Similar to your `dune-project` file, it contains dependencies and\n│   // configuration settings for building your project. It is also similar to\n│   // `package.json`. In the near future, `Dune` and `Opam` will be more\n│   // tightly integrated as one tool.\n├── first_try.opam\n│\n├── index.html\n├── package-lock.json\n├── package.json\n├── vite.config.js\n├── README\n└── node_modules/\n```\n\n## Installing OCaml packages\n\nInstalling OCaml packages is easy, but we have to use a separate\nCLI ([for the time being](https://github.com/dmmulroy/create-melange-app/issues/61)). To intsall dependencies, we are\ngoing to use `opam`, which is OCaml's package manager. You can\nsearch for dependencies and packages on\n[OCaml.org](https://ocaml.org/packages/search?q=).\n\nThere are [some requirements](https://discuss.ocaml.org/t/whats-possible-with-melange/13806/3?u=dmmulroy) to use a package with `Melange` you should read\nabout. That being said, once you find a pakcage you want to install you can\ndo the following steps:\n\n1. Add the library to your `dune-project`'s `depends` section\n2. Run the following commands\n\n```sh\neval $(opam env) # This activates your local switch in your shell\ndune build sexpression_test.opam # This will regenerate your `opam` file\nopam update # This will ensure `opam` can see the most recent versions of packages\nopam install . --deps-only --yes # This will install your new packages\n```\n\n## Getting Help\n\n- [OCaml's official site](https://ocaml.org)\n- [ReasonML's official site](https://reasonml.github.io/)\n- [Melange Docs](https://melange.re)\n- [OCaml Discuss Forums](https://discuss.ocaml.org/)\n- [The Caravan Discord Server](https://discord.gg/fNvVdsUWHE) - This is where\n  the maintainers of `create-melange-app` hang out!\n- [OCaml Discord Server](https://discord.gg/Qpzjmc4t)\n- [ReasonML Discord Server](https://discord.gg/jPEH58TU)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleostera%2Fsexplib-melange","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleostera%2Fsexplib-melange","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleostera%2Fsexplib-melange/lists"}