{"id":27309212,"url":"https://github.com/atalek/staystrella","last_synced_at":"2025-04-12T05:24:22.544Z","repository":{"id":244599902,"uuid":"815577170","full_name":"atalek/staystrella","owner":"atalek","description":"Vacation rental platform webapp made with Nuxt3","archived":false,"fork":false,"pushed_at":"2024-08-28T12:52:44.000Z","size":572,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-08-28T14:05:56.897Z","etag":null,"topics":["drizzle-orm","full-stack","headlessui-vue","leaflet","lucia-auth","neondb","nuxt","postgresql","resend","ssr","tailwindcss","zod"],"latest_commit_sha":null,"homepage":"https://staystrella.atalek.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/atalek.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":"2024-06-15T14:19:15.000Z","updated_at":"2024-08-28T12:52:47.000Z","dependencies_parsed_at":"2024-06-21T23:53:04.675Z","dependency_job_id":null,"html_url":"https://github.com/atalek/staystrella","commit_stats":null,"previous_names":["atalek/staystrella"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atalek%2Fstaystrella","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atalek%2Fstaystrella/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atalek%2Fstaystrella/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/atalek%2Fstaystrella/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/atalek","download_url":"https://codeload.github.com/atalek/staystrella/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248520911,"owners_count":21117950,"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":["drizzle-orm","full-stack","headlessui-vue","leaflet","lucia-auth","neondb","nuxt","postgresql","resend","ssr","tailwindcss","zod"],"created_at":"2025-04-12T05:24:21.882Z","updated_at":"2025-04-12T05:24:22.523Z","avatar_url":"https://github.com/atalek.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Staystrella - Job Board\n\n![Landing page](https://res.cloudinary.com/dkofkuquf/image/upload/v1718382968/nuxtshop/quuh0quqxrwka8uh2vak.png)\n\nThis project is a Vacation Rental Platform inspired by Airbnb, built with **Nuxt 3**,\n**Tailwind CSS**, **Headless UI**, **Neon PostgreSQL** for the database, **Drizzle ORM**,\n**Lucia Auth** with GitHub and Google OAuth, **Leaflet** for map integration,\n**Cloudinary** for image upload, **Zod** for validation and email verification and\npassword reset using **Resend** for sending email.\n\n## Features\n\n- **Responsive Design:** Provides a seamless experience across various devices and screen\n  sizes.\n\n- **Property Listings:** Users can browse through a curated list of properties, each\n  showcasing essential details like title, location, price, available dates, and more.\n\n- **Property Creation:** Hosts can create new property listings by providing relevant\n  information, including title, location, property type, images, pricing details, and\n  more.\n\n- **Filters:** Users can find the right location and type of listing using advanced\n  filtering options.\n\n- **Authentication:** Implements secure authentication with GitHub and Google OAuth using\n  Lucia Auth.\n\n- **Email Verification and Password Reset:** Users can verify their email and reset\n  passwords using Resend.\n\n- **Map Integration:** Displays property locations using Leaflet for interactive map\n  functionality.\n\n- **Image Upload:** Hosts can upload company logos through Cloudinary, ensuring a visually\n  appealing presentation of their listings.\n\n## Technologies Used\n\n- **Nuxt 3:** A powerful framework for building modern web applications with Vue.js.\n\n- **Tailwind CSS:** A utility-first CSS framework for rapidly building custom designs.\n- **Headless UI:** A set of completely unstyled, fully accessible UI components for React\n  and Vue.\n\n- **Neon PostgreSQL:** A scalable, secure, and high-performance PostgreSQL database.\n\n- **Drizzle ORM:** A lightweight and performant TypeScript ORM with developer experience\n  in mind.\n\n- **Lucia Auth:** A simple authentication library with support for OAuth.\n\n- **Leaflet:** An open-source JavaScript library for mobile-friendly interactive maps.\n\n- **Cloudinary:** A cloud-based image and video management service for efficient handling\n  of uploaded logos.\n\n- **Zod:** A TypeScript-first schema declaration and validation library.\n\n- **Resend:** A simple, elegant interface so you can start sending emails in minutes.\n\n![Trips page](https://res.cloudinary.com/dkofkuquf/image/upload/v1718234778/nuxtshop/bbn9mnnuvi5xoygawv8l.png)\n![User profile](https://res.cloudinary.com/dkofkuquf/image/upload/v1718235273/nuxtshop/b8rvgta0h8g4ppn8febm.png)\n\n## Setup\n\n1. **Clone the repository.**\n\n   ```bash\n   git clone https://github.com/atalek/staystrella.git\n\n   ```\n\n2. **Navigate to the project directory.**\n\n   ```bash\n   cd staystrella\n\n   ```\n\n3. **Install dependencies.**\n\n   ```bash\n   npm install\n\n   ```\n\n4. **Configure environment variables.**\n\n- Create a `.env` file in the root of the project.\n- Add the necessary environment variables for Stripe and Cloudinary.\n\n  ```env\n  #Neon psql\n  DATABASE_URL=\"your neon database url\"\n\n  #GITHUB OAUTH\n  GITHUB_CLIENT_ID=\"your github client id\"\n  GITHUB_CLIENT_SECRET=\"your github client secret\"\n\n  #GOOGLE OAUTH\n  GOOGLE_CLIENT_ID=\"your google client id\"\n  GOOGLE_CLIENT_SECRET=\"your google client secret\"\n  BASE_URL=\"your website uri or http://localhost:3000 in development\"\n\n  # Cloudinary\n  CLOUDINARY_URL ='cloudinary://cloudinary_api_key:cloudinary_api_secret@cloudinary_name'\n  CLOUDINARY_PATH ='your cloudinary base url'\n  CLOUDINARY_NAME=\"your cloud name\"\n  CLOUDINARY_FOLDER=\"your cloudinary folder\"\n  CLOUDINARY_API_KEY=\"your cloudinary api key\"\n  CLOUDINARY_API_SECRET=\"your cloudinary api secret\"\n\n\n  # Resend\n  RESEND_API_KEY=\"your resend api key\"\n  API_ROUTE_SECRET=\"api route secret used for protecting your email endpoints\"\n\n  #Google tag\n  GTAG_ID=\"google tag\"\n\n\n  ```\n\n5. **Run the migration and development server.**\n\n   ```bash\n   npm run db:push\n   npm run dev\n\n   ```\n\n6. **Open your browser and visit http://localhost:3000 to view your Vacation Rental\n   Platform.**\n\n## Live Version\n\n[https://staystrella.atalek.com/](https://staystrella.atalek.com/)\n\n## Author\n\nGithub [@atalek](https://github.com/atalek) \u003cbr\u003e Linkedin:\n[@Aleksandar Atanasovski](https://www.linkedin.com/in/aleksandar-atanasovski-16b123263/)\n\u003cbr\u003e Portfolio: [https://www.atalek.com/](https://www.atalek.com/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatalek%2Fstaystrella","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fatalek%2Fstaystrella","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fatalek%2Fstaystrella/lists"}