{"id":28254756,"url":"https://github.com/practicalli/clojure-web-services","last_synced_at":"2025-10-27T13:02:17.575Z","repository":{"id":47619427,"uuid":"56640881","full_name":"practicalli/clojure-web-services","owner":"practicalli","description":"Develop production grade server-side web services and APIs using Clojure and REPL driven development","archived":false,"fork":false,"pushed_at":"2025-03-12T09:50:32.000Z","size":72744,"stargazers_count":13,"open_issues_count":111,"forks_count":14,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-16T04:33:26.678Z","etag":null,"topics":["aero","clojure","integrant","integrant-repl","next-jdbc","postgresql"],"latest_commit_sha":null,"homepage":"https://practical.li/clojure-web-services","language":"Markdown","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/practicalli.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["practicalli-johnny"]}},"created_at":"2016-04-20T00:00:27.000Z","updated_at":"2025-03-12T09:46:52.000Z","dependencies_parsed_at":"2023-09-22T02:53:02.294Z","dependency_job_id":"5a4eadbe-826a-4218-9d92-a38bb02e823b","html_url":"https://github.com/practicalli/clojure-web-services","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/practicalli/clojure-web-services","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fclojure-web-services","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fclojure-web-services/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fclojure-web-services/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fclojure-web-services/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/practicalli","download_url":"https://codeload.github.com/practicalli/clojure-web-services/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/practicalli%2Fclojure-web-services/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265710716,"owners_count":23815405,"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":["aero","clojure","integrant","integrant-repl","next-jdbc","postgresql"],"created_at":"2025-05-19T20:15:35.148Z","updated_at":"2025-10-27T13:02:17.570Z","avatar_url":"https://github.com/practicalli.png","language":"Markdown","readme":"```none\n██████╗ ██████╗  █████╗  ██████╗████████╗██╗ ██████╗ █████╗ ██╗     ██╗     ██╗\n██╔══██╗██╔══██╗██╔══██╗██╔════╝╚══██╔══╝██║██╔════╝██╔══██╗██║     ██║     ██║\n██████╔╝██████╔╝███████║██║        ██║   ██║██║     ███████║██║     ██║     ██║\n██╔═══╝ ██╔══██╗██╔══██║██║        ██║   ██║██║     ██╔══██║██║     ██║     ██║\n██║     ██║  ██║██║  ██║╚██████╗   ██║   ██║╚██████╗██║  ██║███████╗███████╗██║\n╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝ ╚═════╝   ╚═╝   ╚═╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚══════╝╚═╝\n```\n\n## Book overview\n\nA Practical guide to building server-side web services and API's using [the Clojure programming language](http://clojure.org), a pragmatic functional programming language.\n\nThe guide provides simple and clean designs and code examples, encouraging effective use of the Clojure language.\n\nA [REPL Driven Development workflow](https://practical.li/clojure-web-services/introduction/repl-workflow/) provides fast feedback, so you can see exactly what the code does as its being written.\n\nRelevant theory and background reading is included whilst keeping the practical focus of this guide on build projects and experimenting with the code.\n\n\n## Book status\n\n[![MegaLinter](https://github.com/practicalli/clojure-web-services/actions/workflows/megalinter.yaml/badge.svg)](https://github.com/practicalli/clojure-web-services/actions/workflows/megalinter.yaml)\n[![Publish Book](https://github.com/practicalli/clojure-web-services/actions/workflows/publish-book.yaml/badge.svg)](https://github.com/practicalli/clojure-web-services/actions/workflows/publish-book.yaml)\n[![pages-build-deployment](https://github.com/practicalli/clojure-web-services/actions/workflows/pages/pages-build-deployment/badge.svg)](https://github.com/practicalli/clojure-web-services/actions/workflows/pages/pages-build-deployment)\n\n[![Ideas and other issues](https://img.shields.io/github/issues/practicalli/clojure-web-services?label=content%20ideas%20and%20issues\u0026logoColor=green\u0026style=for-the-badge)](https://github.com/practicalli/clojure-web-services/issues)\n[![Pull requests](https://img.shields.io/github/issues-pr/practicalli/clojure-web-services?style=for-the-badge)](https://github.com/practicalli/clojure-web-services/pulls)\n\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/practicalli/clojure-web-services?style=for-the-badge)\n![GitHub contributors](https://img.shields.io/github/contributors/practicalli/clojure-web-services?style=for-the-badge\u0026label=github%20contributors)\n\n### Creative commons license\n\n\u003cdiv style=\"width:95%; margin:auto;\"\u003e\n  \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-sa/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-sa/4.0/88x31.png\" /\u003e\u003c/a\u003e\n  This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License (including images \u0026 stylesheets).\n\u003c/div\u003e\n\n## Contributing\n\nIssues and pull requests are most welcome although it is the maintainers discression as to if they are applicable.  Please detail issues as much as you can.  Pull requests are simpler to work with when they are specific to a page or at most a section.  The smaller the change the quicker it is to review and merge.\n\nPlease [see the detailed contributing section of the book](contributing.html) before raising an issue or pull request\n\n* [Current Issues](https://github.com/practicalli/clojure-web-services/issues)\n* [Current pull requests](https://github.com/practicalli/clojure-web-services/pulls)\n\n[Practicalli Clojure CLI Config](clojure/clojure-cli/practicalli-config.md) provides a user level configuration providing aliases for community tools used throughout this guide.  Issues and pull requests can also be made via its GitHub repository.\n\nBy submitting content ideas and corrections you are agreeing they can be used in any work by Practicalli under the [Creative Commons Attribution ShareAlike 4.0 International license](https://creativecommons.org/licenses/by-sa/4.0/).  Attribution will be detailed via [GitHub contributors](https://github.com/practicalli/clojure-web-services/graphs/contributors).\n\n\n## Sponsor Practicalli\n\n[![Sponsor Practicalli via GitHub](https://raw.githubusercontent.com/practicalli/graphic-design/live/buttons/practicalli-github-sponsors-button.png)](https://github.com/sponsors/practicalli-johnny/)\n\nAll sponsorship funds are used to support the continued development of [Practicalli series of books and videos](https://practical.li/), although most work is done at personal cost and time.\n\nThanks to [Cognitect](https://www.cognitect.com/), [Nubank](https://nubank.com.br/) and a wide range of other [sponsors](https://github.com/sponsors/practicalli-johnny#sponsors) for your continued support\n\n\n## GitHub Actions\n\nThe megalinter GitHub actions will run when a pull request is created,checking basic markdown syntax.\n\nA review of the change will be carried out by the Practicalli team and the PR merged if the change is acceptable.\n\nThe Publish Book GitHub action will run when PR's are merged into main (or the Practicalli team pushes changes to the default branch).\n\nPublish book workflow installs Material for MkDocs version 9\n\n\n## Local development\n\nInstall mkdocs version 9 using the Python pip package manager\n\n```bash\npip3 install mkdocs-material==\"9.4\"\n```\n\nInstall the plugins used by the Practicalli site using Pip (these are also installed in the GitHub Action workflow)\n\n```bash\npip3 install mkdocs-material mkdocs-callouts mkdocs-glightbox mkdocs-git-revision-date-localized-plugin mkdocs-redirects pillow cairosvg\n```\n\n\u003e pillow and cairosvg python packages are required for [Social Cards](https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/)\n\nFork the GitHub repository and clone that fork to your computer,\n\n```bash\ngit clone https://github.com/\u003cyour-github-account\u003e/\u003crepository\u003e.git\n\n```\n\nRun a local server from the root of the cloned project\n\n```bash\nmake docs\n```\n\nThe website will open at \u003chttp://localhost:8000\u003e\n\nIf making smaller changes, then only rebuild the content that changes, speeding up the local development process\n\n```bash\nmake docs-changed\n```\n","funding_links":["https://github.com/sponsors/practicalli-johnny","https://github.com/sponsors/practicalli-johnny/"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpracticalli%2Fclojure-web-services","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpracticalli%2Fclojure-web-services","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpracticalli%2Fclojure-web-services/lists"}