{"id":17171017,"url":"https://github.com/tipsy/javalinstagram","last_synced_at":"2025-04-10T23:00:22.281Z","repository":{"id":78944804,"uuid":"123685624","full_name":"tipsy/javalinstagram","owner":"tipsy","description":null,"archived":false,"fork":false,"pushed_at":"2023-05-23T20:38:45.000Z","size":102,"stargazers_count":11,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T19:46:56.086Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tipsy.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-03T11:26:13.000Z","updated_at":"2023-08-23T12:59:42.000Z","dependencies_parsed_at":"2024-12-02T10:20:53.108Z","dependency_job_id":"b21b1932-7910-413f-816a-c471b980046e","html_url":"https://github.com/tipsy/javalinstagram","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tipsy%2Fjavalinstagram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tipsy%2Fjavalinstagram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tipsy%2Fjavalinstagram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tipsy%2Fjavalinstagram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tipsy","download_url":"https://codeload.github.com/tipsy/javalinstagram/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248312147,"owners_count":21082638,"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":[],"created_at":"2024-10-14T23:33:22.128Z","updated_at":"2025-04-10T23:00:22.235Z","avatar_url":"https://github.com/tipsy.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Javalinstagram\n\nA (very limited) Instagram clone built with\n\n* [Javalin](https://javalin.io/) - Kotlin web server framework\n* [JDBI](http://jdbi.org/) - Database connection pool and object mapping\n* [SQLite](https://www.sqlite.org/index.html) - Database\n* [Vue](https://vuejs.org/) - JavaScript view library\n* [axios](https://github.com/axios/axios) - Client side http library\n\n## Functionality\n\n* Create account/sign-in/sign-out (uses bcrypt to hash passwords)\n* Upload photo (resize/crop)\n* Like/unlike photo\n* Get photos (for one user and for all users)\n\n## Screenshot\n![javalinstagram](https://user-images.githubusercontent.com/1521451/62417524-12c53b80-b652-11e9-9ac4-3cac1d63915e.PNG)\n\n## Application structure\n\n### Backend\n\nThe application is packaged by feature rather than layer. This means that (for example)\nall functionality related to photos (like a `Photo` class, a `PhotoDao`, a `PhotoController`)\nare in a `photo` package, instead of having a `controller` package with controllers for different features:\n\n```text\nsrc\n└───main\n    └───kotlin\n        └───javalinstagram\n            ├───account\n            ├───like\n            ├───photo\n            ├───util\n            └───Main.kt // backend entry point\n```\n\nSecurity is handled by Javalin's `AccessManager`, and set per endpoint. Sessions are handled by Jetty.\n\n### Frontend\n\nThe frontend is split into `components` and `views`. Both components and views are \"single-file\", meaning HTML/JS/CSS are all contained in one file.\nComponents are re-usable and can be included in one or more views:\n\n```text\nsrc\n└───main\n    └───resources\n        └───vue\n            ├───components\n            ├───views\n            └───layout.html\n```\n\nThere is no Webpack or other build system, the application uses [JavalinVue](https://javalin.io/documentation#vue-support)\nfor rapid development.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftipsy%2Fjavalinstagram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftipsy%2Fjavalinstagram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftipsy%2Fjavalinstagram/lists"}