11 Commits

Author SHA1 Message Date
Alexis
1c835d2c73 Merge branch 'dev' 2026-06-29 21:55:23 +02:00
Alexis
a281102b3e Version bump 2026-06-29 21:55:17 +02:00
Alexis
d0e4dfc53b Updated README 2026-06-29 21:54:27 +02:00
Alexis
565ffaf494 Added paris restaurants 2026-06-29 21:53:40 +02:00
Alexis
9e84c95260 Changed tilelayer map 2026-06-29 21:44:17 +02:00
Alexis
75e915554b Updated package 2026-06-05 16:32:29 +02:00
Alexis
a63f2ade2e Added some restaurants 2026-06-05 16:11:08 +02:00
Alexis
c1ee901cb5 Merge branch 'dev' 2026-02-21 18:14:11 +01:00
Alexis
d673842ce8 Added bun burger review 2026-02-21 18:13:43 +01:00
Alexis
5fe07edfc2 Updated package 2026-02-15 16:42:05 +01:00
Alexis
72ffa5792b Added extra rennes reviews 2026-02-15 16:34:41 +01:00
8 changed files with 1830 additions and 1475 deletions

View File

@@ -1,39 +1,3 @@
# echoes
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
## Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
## Customize configuration
See [Vite Configuration Reference](https://vite.dev/config/).
## Project Setup
```sh
pnpm install
```
### Compile and Hot-Reload for Development
```sh
pnpm dev
```
### Type-Check, Compile and Minify for Production
```sh
pnpm build
```
### Lint with [ESLint](https://eslint.org/)
```sh
pnpm lint
```
A collection of memories and places I've been. Mostly food tbh.

View File

@@ -1,6 +1,6 @@
{
"name": "echoes",
"version": "1.0.0",
"version": "1.0.1",
"private": true,
"type": "module",
"engines": {
@@ -18,37 +18,37 @@
"format": "prettier --write src/"
},
"dependencies": {
"@tailwindcss/vite": "^4.1.18",
"@tailwindcss/vite": "^4.3.0",
"@vue-leaflet/vue-leaflet": "^0.10.1",
"leaflet": "^1.9.4",
"pinia": "^3.0.4",
"tailwindcss": "^4.1.18",
"vue": "^3.5.26",
"tailwindcss": "^4.3.0",
"vue": "^3.5.35",
"vue-leaflet-markercluster": "^0.6.1",
"vue-router": "^4.6.4"
"vue-router": "^5.1.0"
},
"devDependencies": {
"@prettier/plugin-oxc": "^0.1.3",
"@prettier/plugin-oxc": "^0.1.4",
"@tsconfig/node22": "^22.0.5",
"@types/leaflet": "^1.9.21",
"@types/node": "^25.0.3",
"@vitejs/plugin-vue": "^6.0.3",
"@types/node": "^25.9.1",
"@vitejs/plugin-vue": "^6.0.7",
"@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.6.0",
"@vue/tsconfig": "^0.8.1",
"@vue/eslint-config-typescript": "^14.8.0",
"@vue/tsconfig": "^0.9.1",
"clsx": "^2.1.1",
"eslint": "^9.39.2",
"eslint-plugin-oxlint": "~1.35.0",
"eslint-plugin-vue": "~10.6.2",
"jiti": "^2.6.1",
"npm-run-all2": "^8.0.4",
"oxlint": "~1.35.0",
"prettier": "3.7.4",
"sass-embedded": "^1.97.1",
"tailwind-merge": "^3.4.0",
"typescript": "~5.9.3",
"vite": "npm:rolldown-vite@^7.3.0",
"vite-plugin-vue-devtools": "^8.0.5",
"vue-tsc": "^3.2.1"
"eslint": "^10.4.1",
"eslint-plugin-oxlint": "~1.68.0",
"eslint-plugin-vue": "~10.9.2",
"jiti": "^2.7.0",
"npm-run-all2": "^9.0.1",
"oxlint": "~1.68.0",
"prettier": "3.8.3",
"sass-embedded": "^1.100.0",
"tailwind-merge": "^3.6.0",
"typescript": "~6.0.3",
"vite": "npm:rolldown-vite@^7.3.1",
"vite-plugin-vue-devtools": "^8.1.2",
"vue-tsc": "^3.3.3"
}
}

3099
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +1,3 @@
onlyBuiltDependencies:
- '@parcel/watcher'
- '@tailwindcss/oxide'

View File

@@ -38,7 +38,7 @@ const { activeLayers } = storeToRefs(useMap())
<LControlZoom position="bottomright" />
<LTileLayer
url="https://tiles.stadiamaps.com/tiles/alidade_smooth/{z}/{x}/{y}{r}.png"
url="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png"
layer-type="base"
/>

View File

@@ -1,8 +1,12 @@
<script lang="ts" setup>
import { useMap } from '@/stores/map';
import { useParisTokensStore } from '@/stores/parisTokens';
import { useReviewStore } from '@/stores/reviews';
import { storeToRefs } from 'pinia';
const { activeLayers } = storeToRefs(useMap())
const { markers: restaurants } = useReviewStore()
const { markers: tokens } = useParisTokensStore()
function handleTokenClick() {
activeLayers.value.tokens = !activeLayers.value.tokens
@@ -39,7 +43,7 @@ function handleFoodClick() {
</svg>
<span>
Restaurants
Restaurants <small>({{ restaurants.length }})</small>
</span>
</button>
</li>
@@ -61,7 +65,7 @@ function handleFoodClick() {
</svg>
<span>
Monnaie de Paris
Monnaie de Paris <small>({{ tokens.length }})</small>
</span>
</button>
</li>

View File

@@ -9,8 +9,8 @@ const props = defineProps<{
marker: ReviewMarker
}>()
const normalIconSize: PointTuple = [38, 38]
const tinyIconSize: PointTuple = [28, 28]
const normalIconSize: PointTuple = [30, 30]
const tinyIconSize: PointTuple = [25, 25]
const iconSize = ref<PointTuple>(props.marker.closed ? tinyIconSize : normalIconSize)
const iconAnchor = computed<PointTuple>(() => [iconSize.value[0] / 2, iconSize.value[1]])

View File

@@ -213,6 +213,18 @@ const markers: ReviewMarker[] = [
}
]
},
{
title: "Le PAB - Penn Ar Batz",
coords: [48.74482870759872, -4.01035568088185],
type: "restaurant",
food: "mixed",
reviews: [
{
grade: 4.3,
text: "Très bonne surprise ; un curry au poulet très bien travaillé et un lieu bien situé."
}
]
},
{
title: "Fringale",
coords: [48.01905889927451, -2.171397985096437],
@@ -415,6 +427,41 @@ const markers: ReviewMarker[] = [
}
]
},
{
title: "Korean Crousty",
coords: [48.84306800459279, 2.3490308927524692],
type: "restaurant",
food: "street-food",
reviews: [
{
grade: 1.2,
text: "Un restaurant qui a l'air sympa au premier abord, mais le plat ramène vite à la réalité : j'ai mordu dans du cartilage à 3 reprises, le riz baignait dans la sauce et le gras, il était clairement réchauffé (une partie était encore froide). À éviter."
}
]
},
{
title: "Graines du Jour",
coords: [48.840731145459145, 2.34960186823172],
type: "coffee-shop",
reviews: [
{
grade: 3.7,
text: "Un café très bien situé. Les pâtisseries sont bonnes mais un peu cher pour la quantité."
}
]
},
{
title: "SuperMian - Pont De Sichuan 蜀味",
coords: [48.87011047163515, 2.3392487495966265],
type: "restaurant",
food: "asian",
reviews: [
{
grade: 4.2,
text: "Des très bons plats épicés. Les chaises n'étaient pas comfortables, mais c'est la seule critique que je puisse faire. Le rapport qualité prix est excellent et la quantité est au rendez-vous. J'hésitais à y retourner dans la même journée tellement j'étais satisfait."
}
]
},
{
title: "KilKenny's Pub",
coords: [48.11105421896557, -1.6773275062735566],
@@ -426,6 +473,54 @@ const markers: ReviewMarker[] = [
}
]
},
{
title: "Parfums d'Asie",
coords: [48.115479349777026, -1.680810044315388],
type: "restaurant",
food: "asian",
reviews: [
{
grade: 4.1,
text: "Très bon restaurant asiatique et assez bon rapport qualité-prix. Souvent complet pendant les midis."
}
]
},
{
title: "Breizhliner",
coords: [48.1160922873266, -1.6809966252967141],
type: "restaurant",
food: "eastern",
reviews: [
{
grade: 3.5,
text: "Un bon kebab au centre-ville, je suis pas fan de la sauce blanche et ça manquait d'assaisonnement mais c'était bon."
}
]
},
{
title: "Ikimasho Rennes",
coords: [48.11070532279335, -1.6784780127690817],
type: "restaurant",
food: "eastern",
reviews: [
{
grade: 3.0,
text: "Similaire à celui de Nantes, tout le gimmick du restaurant repose sur le décor. Le reste laisse à désirer : le tonkatsu avait une bonne viande, mais le curry était fade, le riz n'était pas salé et mal cuit. Les prix sont également élevés pour ce que c'est."
}
]
},
{
title: "Buns Burger",
coords: [48.11323408628579, -1.6954583137420665],
type: "restaurant",
food: "fast-food",
reviews: [
{
grade: 2.1,
text: "Une cuisine de burger dans un coin de rue, uniquement à emporter. Les burgers sont passables, mais les frites sont vraiment pas ouf, surtout uniquement à emporter."
}
]
},
{
title: "La Louperie",
coords: [48.11899359758488, -1.668218313830956],
@@ -748,6 +843,18 @@ const markers: ReviewMarker[] = [
}
]
},
{
title: "Hanami Ramen",
coords: [48.10890045994239, -1.67939103014055],
type: "restaurant",
food: "asian",
reviews: [
{
grade: 3.7,
text: "Un ramen qualitatif et avec un bon rapport qualité-prix."
}
]
},
{
title: "La Tête enfarinée",
coords: [48.11105155759505, -1.6783913363236944],