Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
- Pinia for state management (with `pinia-plugin-persistedstate`)
- Vue Router 4
- Vite
- Yarn (use `yarn install`, `yarn add`, `yarn remove`; do not use npm)

## Conventions

- **No async/await** — use `.then()` / `.catch()` / `.finally()` chains everywhere.
- **Vuetify breakpoints** — always read the `.value` of composable refs: `display.smAndUp.value`, not `display.smAndUp`.
- **State management** — data fetching belongs in Pinia store actions, not in components or `App.vue`. Components call store actions; store actions call services.
- **Services** — keep service files framework-agnostic (no Vue/Pinia imports).
- **Package manager** — Always use Yarn. Never use npm.
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@ yarn dev

L'application sera disponible sur [http://localhost:5173](http://localhost:5173).

### Autres commandes

```
# Lancer l'application en mode production
yarn build

# Lancer l'application en mode production avec un serveur local
yarn preview
```

## Stack technique

* [Vue.js](https://vuejs.org) 3 + [Vuetify](https://vuetifyjs.com) 3
Expand Down
10 changes: 7 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,23 @@
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#0A3A5A" />
<link rel="apple-touch-icon" href="/icons/maskable-192.png" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="CinéPleinAir" />
<title>CinéPleinAir</title>
<meta name="description" content="CinéPleinAir vous aide à trouver et partager les projections de cinéma en plein air près de chez vous." />
<meta name="description" content="CinéPleinAir vous aide à trouver et partager les séances de cinéma en plein air près de chez vous." />

<meta property="og:type" content="website" />
<meta property="og:site_name" content="CinéPleinAir" />
<meta property="og:title" content="CinéPleinAir" />
<meta property="og:description" content="Trouvez et partagez les projections de cinéma en plein air près de chez vous." />
<meta property="og:description" content="Trouvez et partagez les séances de cinéma en plein air près de chez vous." />
<meta property="og:url" content="https://cinepleinair.netlify.app/" />
<meta property="og:image" content="https://cinepleinair.netlify.app/icons/icon-512.png" />

<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="CinéPleinAir" />
<meta name="twitter:description" content="Trouvez et partagez les projections de cinéma en plein air près de chez vous." />
<meta name="twitter:description" content="Trouvez et partagez les séances de cinéma en plein air près de chez vous." />
<meta name="twitter:image" content="https://cinepleinair.netlify.app/icons/icon-512.png" />
</head>
<body>
Expand Down
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,17 @@
"author": "Raphael Odini <raphodn@users.noreply.github.com>",
"license": "MIT",
"scripts": {
"dev": "vite"
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@vue-leaflet/vue-leaflet": "^0.10.1",
"leaflet": "^1.9.4",
"pinia": "^3.0.4",
"pinia-plugin-persistedstate": "^4.7.1",
"vite": "^8.1.0",
"vite-plugin-pwa": "^1.3.0",
"vue": "^3.5.39",
"vue-router": "^5.1.0",
"vuetify": "^3.12.8"
Expand Down
2 changes: 2 additions & 0 deletions src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ const OEDB_WHAT_DEFAULT = 'culture.cinema.outdoor'

export default {
APP_NAME: 'CinéPleinAir',
APP_DESCRIPTION: 'Trouvez et partagez les séances de cinéma en plein air près de chez vous.',
APP_URL: 'https://cinepleinair.org',
APP_GITHUB_URL: 'https://github.com/raphodn/open-air-events',
OEDB_WIKI_URL: 'https://wiki.openstreetmap.org/wiki/OpenEventDatabase',
OEDB_API_URL: 'https://api.openeventdatabase.org',
Expand Down
28 changes: 27 additions & 1 deletion vite.config.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,35 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { VitePWA } from 'vite-plugin-pwa'
import path from 'path'
import constants from './src/constants.js'

export default defineConfig({
plugins: [vue()],
plugins: [
vue(),
VitePWA({
registerType: 'prompt',
includeAssets: ['favicon.ico', 'favicon.png'],
manifest: {
name: constants.APP_NAME,
short_name: constants.APP_NAME,
description: constants.APP_DESCRIPTION,
theme_color: '#0A3A5A',
background_color: '#F6C24A',
display: 'standalone',
start_url: '/',
icons: [
{ src: '/icons/icon-192.png', sizes: '192x192', type: 'image/png' },
{ src: '/icons/icon-512.png', sizes: '512x512', type: 'image/png' },
{ src: '/icons/maskable-192.png', sizes: '192x192', type: 'image/png', purpose: 'maskable' },
{ src: '/icons/maskable-512.png', sizes: '512x512', type: 'image/png', purpose: 'maskable' }
]
},
workbox: {
globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}']
}
})
],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
Expand Down
Loading