{"id":17717920,"url":"https://github.com/ohmydevops/joojoo","last_synced_at":"2025-07-21T19:32:37.757Z","repository":{"id":65526776,"uuid":"430455251","full_name":"ohmydevops/joojoo","owner":"ohmydevops","description":"🐤 joojoo, another shit http web-server written in PHP 8","archived":false,"fork":false,"pushed_at":"2025-02-05T21:25:00.000Z","size":2235,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-14T03:42:46.269Z","etag":null,"topics":["http","joojoo","php","socket","webserver"],"latest_commit_sha":null,"homepage":"https://github.com/ohmydevops/joojoo","language":"PHP","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/ohmydevops.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}},"created_at":"2021-11-21T19:02:33.000Z","updated_at":"2025-02-04T21:42:22.000Z","dependencies_parsed_at":"2024-10-25T17:36:10.489Z","dependency_job_id":"1f00d6b5-0ea1-4bff-b142-1031479a6e1d","html_url":"https://github.com/ohmydevops/joojoo","commit_stats":null,"previous_names":["ohmydevops/joojoo","ohmydevops/jojo"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/ohmydevops/joojoo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fjoojoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fjoojoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fjoojoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fjoojoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ohmydevops","download_url":"https://codeload.github.com/ohmydevops/joojoo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ohmydevops%2Fjoojoo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266364816,"owners_count":23917974,"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","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["http","joojoo","php","socket","webserver"],"created_at":"2024-10-25T14:32:48.238Z","updated_at":"2025-07-21T19:32:37.718Z","avatar_url":"https://github.com/ohmydevops.png","language":"PHP","readme":"# Joojoo | جوجو\n\n**A Tiny Web Server :baby_chick: for Small Tasks**\n\n## The Story Behind joojoo\n\nThe web server that serves the TP-Link TD-8811 modem settings in my room was called `micro_httpd`. Out of curiosity, I searched for it and found this [repository](https://github.com/socram8888/micro_httpd). The code caught my attention, and I thought it would be a great learning experience to build a simple web server from scratch—similar to `micro_httpd`—to explore new computer science concepts and share what I learn with others.\n\n## A Simple Web Server with PHP\n\nIn this repository, I aim to build a basic web server step by step following the rules of [Hypertext Transfer Protocol -- HTTP/1.1](https://datatracker.ietf.org/doc/html/rfc2616).  \nSince I primarily work with PHP these days, I decided to implement it first in PHP 8 and later rewrite it in another language (probably C++ or Go).\n\n## How to Run This Web Server?\n\nTo run it in a Docker environment, simply use the following command:\n\n```\ndocker run --name joojoo --init --rm \\\n          -v YOUR_WEB_DIR:/html \\\n          -p 80:8000 \\\n          ohmydevops/joojoo\n```\n\nReplace `YOUR_WEB_DIR` with the path to your website's root directory.  \nFor example, if your static website is located at `/home/user/website`, run:\n\n```\ndocker run --name joojoo --init --rm \\\n          -v /home/user/website:/html \\\n          -p 80:8000 \\\n          ohmydevops/joojoo\n```\n\nThen, open your browser to view your website.\n\n## Roadmap  \n\n- [x] Serve basic web files (HTML, CSS, JS)  \n- [x] Serve basic static files (images, videos, sounds)  \n- [x] Support 200 status code  \n- [x] Support 404 status code  \n- [x] Support GET method  \n- [x] Handle requests in blocking mode  \n- [x] Dockerized (uploaded to Docker Hub)  \n- [x] Configurable root directory via ENV  \n- [x] Support concurrency  \n- [x] Support [Common Log Format](https://en.wikipedia.org/wiki/Common_Log_Format)  \n- [x] Use simple worker-mode for handle requests [Prefork in Apache](https://httpd.apache.org/docs/2.4/mod/prefork.html)\n- [ ] Support Keep-alive header  \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohmydevops%2Fjoojoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fohmydevops%2Fjoojoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fohmydevops%2Fjoojoo/lists"}