{"id":42520114,"url":"https://github.com/claireso/journal","last_synced_at":"2026-04-12T20:59:00.523Z","repository":{"id":3966762,"uuid":"5060995","full_name":"claireso/journal","owner":"claireso","description":"Journal is a self-hosted application designed for photographers to publish their work","archived":false,"fork":false,"pushed_at":"2025-07-22T16:15:04.000Z","size":6936,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-22T17:44:22.269Z","etag":null,"topics":["nextjs","photography","self-hosted","webpush"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/claireso.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2012-07-15T23:29:40.000Z","updated_at":"2025-07-22T16:11:55.000Z","dependencies_parsed_at":"2023-07-11T02:16:35.426Z","dependency_job_id":"cdfff3ee-a76b-43c1-ad72-56824af3cea6","html_url":"https://github.com/claireso/journal","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/claireso/journal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claireso%2Fjournal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claireso%2Fjournal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claireso%2Fjournal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claireso%2Fjournal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/claireso","download_url":"https://codeload.github.com/claireso/journal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/claireso%2Fjournal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28846187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["nextjs","photography","self-hosted","webpush"],"created_at":"2026-01-28T15:16:13.292Z","updated_at":"2026-01-28T15:16:14.074Z","avatar_url":"https://github.com/claireso.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Journal is a self-hosted application designed for photographers to publish their work.\nBy leveraging the latest web technologies, this application provides a responsive and\nuser-friendly interface that enhances the presentation of a photographic journal, with\nthe freedom and control that comes from self-hosting.\n\nNote: The theme is optimized for pictures with an aspect ratio of 3:2, 2:3, or 1:1.\n\n# Technical Stack\n- [Next.js](https://vercel.com/frameworks/nextjs)\n- [PostgreSQL](https://www.postgresql.org/)\n- [Vanilla Extract](https://vanilla-extract.style/)\n- [Zod](https://zod.dev/)\n- [Jest](https://jestjs.io/)\n- [Testing Library](https://testing-library.com/)\n\n# Requirements for installation:\n- [Node v22](https://nodejs.org)\n- [zx](https://google.github.io/zx/)\n- [PostgreSQL](https://www.postgresql.org/) (for standalone installation)\n- [Docker](https://www.docker.com/) (for Docker installation)\n\n\n# Installation\n\n## 1/ Clone the repository\n\n```\ngit clone git@github.com:claireso/journal.git\n```\n\n## 2/ Launch the installation\n\n```\nzx scripts/install/start.mjs\n```\n\nChoose between a **standalone** installation or an installation using **Docker** and follow the steps.\nAt the end, a `.env` file will be created at the root of the project with all the variables used by the application.\n\nExample:\n![ray-so-export](https://github.com/user-attachments/assets/13fbd2fb-c1e6-4887-b51b-203610da01eb)\n\n## 3/ Launch the application\n\n### Standalone\n\n#### Install dependencies\n\n```\n$ npm install\n```\n\n#### Run the application in a development environment\n\n```\n$ npm run dev\n```\n\nThe application will be running at http://localhost:3000\n\nTo change the default port of the application, add it to the command as follows:\n\n```\n$ PORT=4000 npm run dev\n```\n\nNote:\n  - don't forget to update your `.env`\n\n#### Build and run the application in a production environment\n\nThere are two ways to run the application in a production environment\n\n##### 1 - With a reverse proxy (recommanded)\n\nBy default the folder where your photos are uploaded (`uploads`) is not served by the server himself.\nYou will need to configure a reverse proxy (with nginx for example)\n\nWhen your reverse proxy is configured run the commands follow:\n\n```\n$ npm run build\n$ npm run start\n```\n\nThe application will be running at http://localhost:3000\n\nTo change the default port of the application, add it to the command as follow:\n\n```\n$ npm run start -- -p 4000\n```\n\nNote:\n  - don't forget to update your `.env`\n\n##### 2 - With express\n\nIf you can't use a reverse proxy just use the commands follow:\n\n```\n$ npm run build\n$ npm run start:express\n```\n\nThe application will be running at http://localhost:3000\n\nTo change the default port of the application, add it to the command as follow:\n\n```\n$ PORT=4000 npm run start:express\n```\n\nNote:\n  - remove option `output: 'standalone'` from `next.config.js`\n  - don't forget to update your `.env`\n\n### Launch with Docker\n\nThe installation created all necessary Docker images.\nTo launch the application, run `docker compose up` and visit https://localhost.\n\nNote:\n  - With Docker, HTTPS is used. You will need to generate SSL certificates in the `certificates` folder.\n  Files must be named `${SERVER_NAME}.pem` and `${SERVER_NAME}-key.pem` (the same SERVER_NAME in your .env).\n  - You can use [Next.js to generate certificates](https://vercel.com/guides/access-nextjs-localhost-https-certificate-self-signed) to launch the application in your local environment\n\n\n\n![Image](https://github.com/user-attachments/assets/a8abb698-de2f-45ae-9f5a-c51301b56cc2)\n\n![Image](https://github.com/user-attachments/assets/9d05b457-0f60-46b0-9fe9-da5af1bb9c45)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclaireso%2Fjournal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclaireso%2Fjournal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclaireso%2Fjournal/lists"}