{"id":28961410,"url":"https://github.com/dmitry-osin/oxygen-clj","last_synced_at":"2025-06-24T02:03:05.893Z","repository":{"id":297707486,"uuid":"994974293","full_name":"dmitry-osin/oxygen-clj","owner":"dmitry-osin","description":"A simple yet powerful blog application built with Clojure, using JDBC for database operations and PostgreSQL as the database.","archived":false,"fork":false,"pushed_at":"2025-06-19T18:11:27.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-19T18:29:37.664Z","etag":null,"topics":["clojure","hiccup2","jdbc","jetty","repl","ring"],"latest_commit_sha":null,"homepage":"","language":null,"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/dmitry-osin.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,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-02T19:16:11.000Z","updated_at":"2025-06-06T23:54:16.000Z","dependencies_parsed_at":"2025-06-07T00:37:27.888Z","dependency_job_id":null,"html_url":"https://github.com/dmitry-osin/oxygen-clj","commit_stats":null,"previous_names":["dmitry-osin/oxygen-clj"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dmitry-osin/oxygen-clj","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitry-osin%2Foxygen-clj","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitry-osin%2Foxygen-clj/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitry-osin%2Foxygen-clj/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitry-osin%2Foxygen-clj/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dmitry-osin","download_url":"https://codeload.github.com/dmitry-osin/oxygen-clj/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dmitry-osin%2Foxygen-clj/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261589907,"owners_count":23181434,"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":["clojure","hiccup2","jdbc","jetty","repl","ring"],"created_at":"2025-06-24T02:03:05.349Z","updated_at":"2025-06-24T02:03:05.874Z","avatar_url":"https://github.com/dmitry-osin.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Clojure Blog\n\nA simple yet powerful blog application built with Clojure, using JDBC for database operations and PostgreSQL as the\ndatabase.\n\n## Overview\n\nThis project implements a blog platform with basic functionality including:\n\n- User management\n- Blog post creation and management\n- Tagging system\n- Simple web interface using Ring and Hiccup\n\n## Technologies\n\n- **Clojure**: The core programming language\n- **Ring**: Web application library for Clojure\n- **Hiccup**: HTML generation library for Clojure\n- **next.jdbc**: JDBC-based database access library\n- **PostgreSQL**: Relational database for data storage\n\n## Project Structure\n\n```\n├── src/\n│   └── blog/\n│       ├── core.clj    # Web server and route handling\n│       └── db.clj      # Database connection and operations\n├── resources/\n│   ├── db.sql          # Database schema definition\n│   └── init-data.sql   # Initial data for the database\n└── project.clj         # Project configuration and dependencies\n```\n\n## Database Schema\n\nThe application uses the following database tables:\n\n- `users`: Store user information\n- `posts`: Blog post content and metadata\n- `tags`: Categories/tags for posts\n- `posts_tags`: Many-to-many relationship between posts and tags\n- `users_posts`: Many-to-many relationship between users and posts\n\n### Prerequisites\n\n- JDK 8 or higher\n- Leiningen\n- PostgreSQL\n\n### Database Setup\n\n1. Create a PostgreSQL database named `oxygen`\n2. Create a user `oxygen` with password `oxygen`\n3. Grant all privileges on the `oxygen` database to the `oxygen` user\n\n### Running the Application\n\n1. Clone the repository\n2. Initialize the database:\n\n```\nlein repl\n(require 'blog.db)\n(blog.db/initialize)\n```\n\n3. Start the web server:\n\n```\nlein repl\n(require 'blog.core)\n(def server (ring.adapter.jetty/run-jetty #'blog.core/dispatch {:port 3000 :join? false}))\n```\n\n4. Visit [http://localhost:3000](http://localhost:3000) in your browser\n\n## API Endpoints\n\n- `/`: Home page\n- `/about`: About page\n- `/contact`: Contact page\n\n## Development\n\n### Running Tests\n\n```\nlein test\n```\n\n### REPL Development\n\nThe project is configured for interactive development using the REPL:\n\n```\nlein repl\n```\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitry-osin%2Foxygen-clj","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdmitry-osin%2Foxygen-clj","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdmitry-osin%2Foxygen-clj/lists"}