{"id":15650557,"url":"https://github.com/libbum/odyssey","last_synced_at":"2025-04-30T18:08:30.526Z","repository":{"id":2094779,"uuid":"153689395","full_name":"Libbum/Odyssey","owner":"Libbum","description":"Next generation gallery. Exceptional images deserve an exceptional presentation.","archived":false,"fork":false,"pushed_at":"2023-06-21T22:11:52.000Z","size":1375,"stargazers_count":34,"open_issues_count":13,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-30T18:08:00.716Z","etag":null,"topics":["elm","gallery","photo-browser","photo-gallery","rust","travel-blog"],"latest_commit_sha":null,"homepage":"https://odyssey.neophilus.net","language":"Elm","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Libbum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-10-18T21:24:41.000Z","updated_at":"2024-09-25T08:21:49.000Z","dependencies_parsed_at":"2022-08-28T21:10:18.573Z","dependency_job_id":"a69e2f77-eac4-44ed-b556-4c7df23db6c9","html_url":"https://github.com/Libbum/Odyssey","commit_stats":{"total_commits":167,"total_committers":1,"mean_commits":167.0,"dds":0.0,"last_synced_commit":"965ea4335ba40933ba43de8794fb63890d40847b"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Libbum%2FOdyssey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Libbum%2FOdyssey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Libbum%2FOdyssey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Libbum%2FOdyssey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Libbum","download_url":"https://codeload.github.com/Libbum/Odyssey/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251758167,"owners_count":21638989,"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":["elm","gallery","photo-browser","photo-gallery","rust","travel-blog"],"created_at":"2024-10-03T12:35:04.120Z","updated_at":"2025-04-30T18:08:30.506Z","avatar_url":"https://github.com/Libbum.png","language":"Elm","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Odyssey\n\nA photoblog of my adventures. [https://odyssey.neophilus.net](https://odyssey.neophilus.net)\n\n\u003ccenter\u003e\u003cimg src=\"odyssey.jpg\" /\u003e\u003c/center\u003e\n\n## Usage\n\nIf you wish to use something similar, there are a few conventions you need to abide by.\n\n### Directory structure\n\nOdyssey assumes all images reside in `dist/gallery` under a directory structure that follows `\u003cyear\u003e/\u003cmonth\u003e/\u003ccountry\u003e/\u003clocation\u003e`, for example `2015/04/Norway/Oslo`.\nPlaces and countries with spaces in their names should be rendered as `Ho_Chi_Minh_City`.\nImage files can be named however you wish.\n\n### odyssey.yaml\n\nOnce your files are stored correctly in the gallery structure there is one important file to maintain.\n`manifester/odyssey.yaml` takes care of two lists: `places` and `trips`.\n\n---\n\nPlaces requires a list of all countries in the gallery with sub-lists of locations in the gallery.\nAs Odyssey is targeting English, local names can be stored here and will be incorporated into the gallery.\nThe local name for a country should be a sub-list element:\n\n```yaml\nNorway:\n  Local: Norge\n```\n\nLocations can be the value corresponding to the sub-list's key: `Gothenburg: Göteborg`.\nSo a complete example could be:\n\n```yaml\nplaces:\n  Sweden:\n    Local: Sverige\n    Are: Åre\n    Gothenburg: Göteborg\n    Stockholm:\n```\n\n---\n\nThe Trips list is a little more involved, but needs to be so that the paths that are traced on the globe look like you'd anticipate.\n\nHere's an example from my trip list to study:\n\n```yaml\ntrips:\n  - name: S16\n    description: Summer 2016\n    cities:\n      - Gothenburg\n      - Frankfurt\n      - Vienna\n      - Yerevan\n      - Vienna\n      - Frankfurt\n      - Gothenburg\n      - Tallinn\n      - Helsinki\n      - Gothenburg\n      - Stockholm\n      - Gothenburg\n      - Copenhagen\n      - Crete\n      - Athens\n      - Frankfurt\n      - Freiburg\n      - Frankfurt\n      - Gothenburg\n    dates:\n      - 2016/05\n      - 2016/06\n      - 2016/07\n      - 2016/09\n```\n\n- `name` is an identifier that is used internally to identify each trip. Choose a short but unique ID.\n- `description` is the one that shows up in the filter list in the menu, as well as the URL.\n- `cities` is a list of locations visited, in order on your trip. You can easily see that I was living in Gothenburg in 2016, since I start and end there, as well as stopped by multiple times during `Summer 2016`. The world map traces this list and puts a line between each pair in the list. It makes sense that my day trip to `Stockholm` is sandwiched between two `Gothenburg`s\u0026mdash;otherwise the world map would show me jumping from `Stockholm` to `Copenhagen`, which didn't happen.\n- `dates` is a crude but effective method of filtering trips. Simply list the months your trip was on here, and the gallery will grab all images from the list of cities within the time-frame of the months listed here.\n\n### .desc files\n\nThe manifester generates empty `.desc` files for each image if one doesn't exist.\nIf you wish to add a short description to a photo, write it in this file and the manifester will add it next pass.\nThis file is not escaped, so please use `\\\"` if you need quotations in your description.\n\n### attribution.yaml\n\nIf you wish to assign a license to the images in your gallery, use the `manifester/attribution.yaml` file.\nInitially, you'll want to rename the `manifester/attribution.example.yaml` file to `manifester/attribution.yaml`.\nI've done this so that users just trying this repo out, don't apply my personal attribution to their photos accidentally.\n\nBy default, `Marked` will be set to *false*, thus skipping this step in the manifest building process.\nSwitching this value to *true* will turn on a routine the will inject xmp metadata into each of your images.\nIt will not alter any other exif data, but will overwrite any licensing data that may exist on your image already.\nThis is not ideal and will be [fixed in the future](https://github.com/Libbum/Odyssey/issues/51).\nIn general though, this allows you to play around with your attribution file and each manifest build will change the agreement metadata in your images.\n\n#### Choosing a license\n\nI'd recommend a Creative Commons license.\nMany of which allow copying freely, but also have options for a non-commercial use clause.\nThis is what I choose: [Creative Commons Attribution-NonCommercial-Share Alike 4.0 International License](http://creativecommons.org/licenses/by-nc-sa/4.0/)\n\nCreative Commons have a great [selector](https://creativecommons.org/choose/) on their website with ample information about each choice.\n\nAt the moment, the routines herein only support the CC scheme, so if you'd like to include something other than their licenses, please [file an issue](https://github.com/Libbum/Odyssey/issues).\n\n### Updating a gallery\n\nOnce your files are organised, you can build your manifest by calling `make manifest`. This will  generate all needed code for the updated `world.json` and `Manifest.elm` files.\n`make build` will generate all the javascript for the app, so you can preview the gallery before deployment: `make serve` will do this for you.\n`deploy` is a one-command update and upload trigger, so if you've just added images and nothing else, this is the only tool you want.\n\n## Development\n\nAssumes you're using a modern linux distro with [Elm 0.19](https://elm-lang.org/) and [Rust](https://www.rust-lang.org/) installed. As well as the inclusion of [elm-live](https://github.com/wking-io/elm-live), [uglifyjs](http://lisperator.net/uglifyjs/) and [crass](https://github.com/mattbasta/crass) in your toolchain.\n\n`make debug` gives you the Elm time-travelling debugger when live-previewing your changes.\n\n## License\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png\" /\u003e\u003c/a\u003e\u003cbr /\u003eImages in this gallery are licensed under a \u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc-sa/4.0/\"\u003eCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License\u003c/a\u003e.\nContact me directly if you wish to use an image for commercial purposes.\n\n---\n\nCode for this gallery is released under the BSD 3-Clause \"New\" or \"Revised\" License, in line with most Elm libraries used within.\n\n[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2FLibbum%2FOdyssey.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2FLibbum%2FOdyssey?ref=badge_large)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibbum%2Fodyssey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibbum%2Fodyssey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibbum%2Fodyssey/lists"}