chore: durcit la configuration pour la production

- mobile: externalise l'URL d'API via EXPO_PUBLIC_API_URL (repli localhost en dev)
- backend: .env.example adapté au projet (PostgreSQL, JWT, FRONTEND_URL, Redis)
- frontend/mobile: ajoute .env.example (+ exception gitignore front)
- mobile: supprime les 4 `any` (helper getApiError, type Feed, glyphMap Ionicons)
- backend: normalise le style PSR-12 via Pint (13 fichiers)

Tests backend 15/15, mobile tsc 0, Pint pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Azmog
2026-06-17 17:00:33 +02:00
parent 052e2f22cd
commit 6f5b8182ca
22 changed files with 122 additions and 95 deletions
+2 -1
View File
@@ -3,12 +3,13 @@ import { Ionicons } from '@expo/vector-icons';
import { useRouter } from 'expo-router';
import { useFeeds } from '@/hooks/useFeeds';
import { Colors } from '@/lib/colors';
import type { Feed } from '@/types';
export default function InfoListScreen() {
const { data: feeds, isLoading } = useFeeds();
const router = useRouter();
const renderItem = ({ item }: { item: any }) => (
const renderItem = ({ item }: { item: Feed }) => (
<TouchableOpacity
style={styles.card}
onPress={() => router.push(`/(tabs)/info/${item.slug}`)}
+2 -2
View File
@@ -67,10 +67,10 @@ export default function ProfileScreen() {
);
}
function MenuItem({ icon, label }: { icon: string; label: string }) {
function MenuItem({ icon, label }: { icon: keyof typeof Ionicons.glyphMap; label: string }) {
return (
<TouchableOpacity style={styles.menuItem}>
<Ionicons name={icon as any} size={20} color={Colors.gray[600]} />
<Ionicons name={icon} size={20} color={Colors.gray[600]} />
<Text style={styles.menuLabel}>{label}</Text>
<Ionicons name="chevron-forward" size={18} color={Colors.gray[300]} />
</TouchableOpacity>