Compare commits
19 Commits
ace0623ff8
...
dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
264188afc2 | ||
|
|
8c28d04560 | ||
|
|
674a475dd9 | ||
|
|
0e3b4644b3 | ||
|
|
231928b012 | ||
|
|
e2b07e431a | ||
|
|
acda08394e | ||
|
|
ee455bc83f | ||
|
|
1c835d2c73 | ||
|
|
a281102b3e | ||
|
|
d0e4dfc53b | ||
|
|
565ffaf494 | ||
|
|
9e84c95260 | ||
|
|
75e915554b | ||
|
|
a63f2ade2e | ||
|
|
c1ee901cb5 | ||
|
|
d673842ce8 | ||
|
|
5fe07edfc2 | ||
|
|
72ffa5792b |
38
README.md
38
README.md
@@ -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.
|
||||
16
index.html
16
index.html
@@ -55,6 +55,22 @@
|
||||
<meta name="twitter:domain" content="memorium.alexcreates.fr" />
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
|
||||
<!-- Matomo -->
|
||||
<script>
|
||||
var _paq = window._paq = window._paq || [];
|
||||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
|
||||
_paq.push(['trackPageView']);
|
||||
_paq.push(['enableLinkTracking']);
|
||||
(function() {
|
||||
var u="//stats.alexcreates.fr/";
|
||||
_paq.push(['setTrackerUrl', u+'matomo.php']);
|
||||
_paq.push(['setSiteId', '1']);
|
||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
||||
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
|
||||
})();
|
||||
</script>
|
||||
<!-- End Matomo Code -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
46
package.json
46
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "echoes",
|
||||
"version": "1.0.0",
|
||||
"version": "1.0.3",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"engines": {
|
||||
@@ -18,37 +18,37 @@
|
||||
"format": "prettier --write src/"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/vite": "^4.1.18",
|
||||
"@tailwindcss/vite": "^4.3.2",
|
||||
"@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.2",
|
||||
"vue": "^3.5.39",
|
||||
"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.2.0",
|
||||
"@tsconfig/node22": "^22.0.5",
|
||||
"@types/leaflet": "^1.9.21",
|
||||
"@types/node": "^25.0.3",
|
||||
"@vitejs/plugin-vue": "^6.0.3",
|
||||
"@types/node": "^26.1.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.9.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.6.0",
|
||||
"eslint-plugin-oxlint": "^1.73.0",
|
||||
"eslint-plugin-vue": "~10.9.2",
|
||||
"jiti": "^2.7.0",
|
||||
"npm-run-all2": "^9.0.2",
|
||||
"oxlint": "^1.73.0",
|
||||
"prettier": "3.9.5",
|
||||
"sass-embedded": "^1.100.0",
|
||||
"tailwind-merge": "^3.6.0",
|
||||
"typescript": "~6.0.3",
|
||||
"vite": "^8.1.4",
|
||||
"vite-plugin-vue-devtools": "^8.1.5",
|
||||
"vue-tsc": "^3.3.7"
|
||||
}
|
||||
}
|
||||
4043
pnpm-lock.yaml
generated
4043
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,5 @@
|
||||
allowBuilds:
|
||||
'@parcel/watcher': true
|
||||
onlyBuiltDependencies:
|
||||
- '@parcel/watcher'
|
||||
- '@tailwindcss/oxide'
|
||||
|
||||
@@ -46,4 +46,4 @@ Disallow: /
|
||||
User-agent: DataForSeoBot
|
||||
Disallow: /
|
||||
|
||||
Sitemap: https://alexcreates.fr/sitemap-index.xml
|
||||
Sitemap: https://trips.alexcreates.fr/sitemap-index.xml
|
||||
@@ -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"
|
||||
/>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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]])
|
||||
|
||||
@@ -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],
|
||||
|
||||
Reference in New Issue
Block a user