ELOCATE is an open-source project designed to help people find and share places easily. It features an interactive map, location details, and user-generated content, providing a comprehensive platform for discovering new locations around you.
- Map Listing: The home page features a map listing all locations within a 5km radius by default, extendable to 10km.
- Reverse Geocoding: Drag a marker on the map to get potential addresses using the Google Geocoding API. Users can create a location with an additional description.
- Location List View: Users can view available locations in a list format as an alternative to the map view.
- Location Details: View detailed information about a specific location, including full address, description, date added, and user details. Share locations on social media and get directions via Google Maps.
- File Uploading: Users can upload files using Vercel Blob or AWS S3 storage.
- Multilingual Support: Both server and client-side translations in French and English.
- Session Management: Easy login or account creation using Google sign-in via NextAuth.js.
- Google Maps API: For map listing and geocoding.
- Google Auth: For authentication.
- AWS S3: For file storage.
- Vercel Blob: For file storage.
- MongoDB: For data storage.
- Tailwind CSS: For styling.
- Shadcn UI: For UI components.
- Vercel: For deployment.
- Prisma ORM: To interact with the database.
- Zustand: For state management.
- Next.js: As the React framework.
- TypeScript: For type safety.
- Next i18next: For translations.
- Zod: For form validation.
- React Hook Form: For handling forms.
- Lucide React: For icons.
Create a .env
file at the root of your project and add the following variables:
AUTH_SECRET=
AUTH_GOOGLE_ID=
AUTH_GOOGLE_SECRET=
AUTH_FACEBOOK_ID=
AUTH_FACEBOOK_SECRET=
AUTH_RESEND_KEY=
BLOB_READ_WRITE_TOKEN=
AWS_IDENTITY_POOL_ID=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=
AWS_BUCKET_NAME=
NEXT_PUBLIC_BASE_URL=
DATABASE_URL=
NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=
NEXT_PUBLIC_GOOGLE_MAPS_ID=
NEXT_PUBLIC_BASE_SITE_URL=
Before starting, ensure you have the following configured:
- AWS S3: Setup Guide
- Vercel Blob Storage: Setup Guide
- MongoDB: Setup Guide
- Google Maps API: Setup Guide
- OAuth API Key and Secret: Google OAuth Setup
-
Clone the project:
git clone https://github.com/nelsonmandeladev/locate-elecam
-
Change to the project directory:
cd place-finder
-
Install the dependencies:
npm install
-
Generate the Prisma client:
npm run db:gen
-
Push the Prisma schema to your database:
npm run db:push
-
Start the development server:
npm run dev
Deploy your project on Vercel by following their deployment documentation.
We welcome contributions! To contribute, follow these steps:
- Fork the repository.
- Create a new branch:
git checkout -b my-feature-branch
- Make your changes.
- Commit your changes:
git commit -m 'Add some feature'
- Push to the branch:
git push origin my-feature-branch
- Submit a pull request.
For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License. Feel free to use it for any use case.
If you encounter any issues or have questions, please feel free to open an issue on the GitHub repository.
Happy coding!