Final production configuration: Firebase Hosting, Render Blueprint and CORS security fix
This commit is contained in:
@ -1,2 +1,2 @@
|
|||||||
VITE_API_URL=http://10.0.2.2:8000
|
VITE_API_URL=https://sibu-backend.onrender.com
|
||||||
VITE_GOOGLE_MAPS_API_KEY=AIzaSyD1yFqWNtGzHgmjgW0jnaDYaCnLCs9rHdQ
|
VITE_GOOGLE_MAPS_API_KEY=AIzaSyD1yFqWNtGzHgmjgW0jnaDYaCnLCs9rHdQ
|
||||||
|
|||||||
82
frontend/.firebase/hosting.ZGlzdA.cache
Normal file
82
frontend/.firebase/hosting.ZGlzdA.cache
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
vite.svg,1769464283939,699a02e0e68a579f687d364bbbe7633161244f35af068220aee37b1b33dfb3c7
|
||||||
|
sibu.png,1769464283937,293976987d6dd42ea0685703efdf8bb4b92d0e72ca60d086cca82635b824df51
|
||||||
|
icon.svg,1769464283926,50dae95695b6d0ac53627f56ecfae46c3b9a7bfbc2d94c76c1cec012b9422772
|
||||||
|
icon-512.png,1769464283924,fe2a429c64367c8e72aa29f32f187e6acbbe462e8313872309912b925b4748d2
|
||||||
|
icon-192.png,1769464283919,7a1084f7cf4d0cbbc9584ce42827df01d9ca9572e695ca5d81edc4aee00b7fed
|
||||||
|
icon-1024.png,1769464283917,40fad05d9b584cc0c64ffafb4fc09cd2d5c4829b93519fb2054f22ba312dde60
|
||||||
|
favicon.ico,1769464283903,553f734900a313ee735847c6fd3333a188e7d21f10efa11903d53cc75937eb9c
|
||||||
|
favicon-32.png,1769464283900,4d0eeeadf9e051b36d2ad4cec4bb0d8135b7879a0323077d0b5e1e70e0f4445b
|
||||||
|
favicon-16.png,1769464283899,5fec82c563501c9fbed7e40b3878a908b91801b60f4fbbfab57cefb4fe78931a
|
||||||
|
default-coupon.png,1770001277723,ff8babdd3515989ffe44728488ea910e15d09dbf395fb5036141c520dbfe94a6
|
||||||
|
index.html,1771701423869,cfb0ff44eadf88e7e803512ee66eb2ebad7f922c858b8c1989c4f0014ede1ec2
|
||||||
|
manifest.webmanifest,1771701423869,87eb160150ca30a7cf3f3d6ca9af3a21fafe809e86023fa7de1315da036b5592
|
||||||
|
registerSW.js,1771701423869,09e15d1438017c065a3281739cb5506aeaf7b3047bc3ada992da01d4497c2d43
|
||||||
|
sw.js,1771701425444,1650a8c23b0866765d7a50f1befc46cd9565a89abd79d745186167f3371d8a24
|
||||||
|
assets/timeFormatter-BjMQ8E0Y.js,1771701423866,659c6bddc1380663c70893da1bb2adc86d18101a122c196a75aaa1d76d9c382f
|
||||||
|
assets/web-BkZkDO5o.js,1771701423869,08a0ebc9de3a894ac329412e888da68da84fefdc68155cbfc01617af8f6b97c7
|
||||||
|
assets/telemetryService-BKDpG6Mm.js,1771701423869,2c786690b42d52af4da1a5aef032963e869fbd7501fc06164001e8cb2323987a
|
||||||
|
assets/useGoogleMaps-D9NxZpRa.js,1771701423866,a1d982d1a6d2c404dcce8e5841ca2da5afb5b69e5e89166a93aff1bf316c5082
|
||||||
|
assets/TaxiView-H2hqnMSd.js,1771701423866,4cb3ca434eaf347434df6af4d041a007ca45aa5718ba3201606d3f682a134fcf
|
||||||
|
assets/StrategicAnalytics-Ck0SNJxh.css,1771701423866,69615149ccc2cd5e3eb7473d4af584f4bbd3bd2d08bbe3f74f7b453a413d5713
|
||||||
|
assets/SplashScreen-0vI7NOKY.js,1771701423866,d49fae7f3957331c431a0393bbd68b0afbb27029bc29a4b79d1946d91b9c9c56
|
||||||
|
assets/schedulesService-BgcVoGoP.js,1771701423866,40a8967236cca5aeb17ad5b07cc2c83649bdd45eed345fdd21370852bde4e13e
|
||||||
|
assets/TaxiView-BycuFnLU.css,1771701423866,7f49c5e464c106c63ebd421272b13b65e12615e658d64add93404d58ca0b440d
|
||||||
|
assets/SchedulesView-CRLKeJ_W.css,1771701423866,db6e487c60f4e5b6aaf9fe391974de116a2e5f5be5e81347e82291ea27a8272b
|
||||||
|
assets/RoutesView-BQdZq3GS.css,1771701423866,eeca12c4566c78503b02cf8f764d849517ab81ed1f5077d3dd4c595dd04770d6
|
||||||
|
assets/SchedulesView-CsvW8kQ_.js,1771701423866,e55f372ae66e7053f72e6ebb0213ccdc71118f64683b0450b14afaec429ae83c
|
||||||
|
assets/RoutesView-4Aqre4Ly.js,1771701423866,10e0b0b2626d5a04f51fbeeb7fb085a11b2181e9c1d8ce64ca69121bdc9c8fea
|
||||||
|
assets/routesService-DiTVyDZb.js,1771701423866,f36c202b439a91111ed52a190f432869d3376bf172939e1d124622ff323504a6
|
||||||
|
assets/route-BBczrxUf.js,1771701423866,3fec33c420d8b3fc1feb6161666e7ba4e79e0fd1d1744bfbdeb32d242c390283
|
||||||
|
assets/ProfileView-BhSlUAPK.css,1771701423866,17e1f8982ffd5bfde0721b5f9a23aca36a66900781e8b43d35dc26f403c2cf0a
|
||||||
|
assets/PromoterDashboard-nSP6hhuP.css,1771701423866,d4c01a2f7ae984d0d7ad1ac7b575ab981d75dabfd2c3794ebc74ee43fcc96fb0
|
||||||
|
workbox-1d305bb8.js,1771701425444,5e0e0f57e6b732b3a5dd91cb61f94f7d1d79775b680269e6b0a208a0f5f1bbd6
|
||||||
|
assets/SplashScreen-K-kyfAob.css,1771701423856,c01e5e1406d96f10dd4b5253f39453e880cb6f627a844b98b65169a1a5432bdc
|
||||||
|
assets/ProfileView-BE10mpVz.js,1771701423866,8107468a89fd8632466c7c7601793fabce112bd95f2d44aae7d8e00da092d500
|
||||||
|
assets/PromoterDashboard-Mpqpwfs8.js,1771701423869,0a14866803e249c626bad771a2e6ebb20a3b0a116d0e003106228d52f9f5608a
|
||||||
|
assets/purify.es-Bzr520pe.js,1771701423869,6ce952e09072ea544ebfdb257d3775ac9a6de76808b87d6fd0de467e24d1d8ad
|
||||||
|
assets/MapView-a2VRpt8l.css,1771701423866,b83c3fb9a89bc4726313fd755c27742eb787861c0f8a1a58f0176f5e289996ed
|
||||||
|
assets/icon-192-cB8p-G7m.js,1771701423866,f41fd8e2adc5e413f2f83fa06bc5a5ad9759f6f28af06348e852d6b88839c20e
|
||||||
|
assets/FavoritesView-CR-viOET.css,1771701423866,5d4fc48a791e14b691de4e2f5bfc7af9dec3563ab1845b503da0798682bbbdcc
|
||||||
|
assets/index-DFpbGEZK.css,1771701423866,c70cc6edccf0291dc7c2f4ea450d2384c5c12ec6a5ba9675a43ce766efa3acf3
|
||||||
|
assets/favorites-e6yvOLwd.js,1771701423866,d5d7251361dbd1368fe58b240d572c4e106f04fbf73e2f26ec87e7f60c139b7e
|
||||||
|
assets/FavoriteButton-x_eupA7E.css,1771701423866,e83a939e4e4ef837f8b9b5b1e0ed4df3ad37d131d3fd2fb2c0063d4b99235d43
|
||||||
|
assets/FavoriteButton-Cn_uurZY.js,1771701423866,cb5d46198bf2c42f7acd523255d01f7d4234a620e6ea93c811efc09303295046
|
||||||
|
assets/FavoritesView-BFQVLfND.js,1771701423866,8950f5ff49eda4ecb5571794cc3b0c99b7735a3caba1ed2833052387719795ed
|
||||||
|
assets/MapView-BRfyp93Z.js,1771701423866,964058484a8934480d5ec7b9a8e87e6588fe2ea066b8a0d0646e0610cea62575
|
||||||
|
assets/DriverDashboard-DWfPJRR-.css,1771701423866,8411c7297f0aee41d3d32e4858fc38c0760659e7aa81867fb3e465dba9a236d7
|
||||||
|
assets/DriverDashboard-Bya8oQWi.js,1771701423869,9555616e0da2129ee86820873cc8d87d8619e99cbff019fe8335db7a05cfa31e
|
||||||
|
assets/DiscoverView-_tZVS0_s.css,1771701423866,50599cabae02d02a0ff2d4074f2238e38fd6c2fa9724a7c6308e29981ff59e4c
|
||||||
|
assets/DiscoverView-CEPG6AR8.js,1771701423866,d76294070277cd7ec02453e0351d57a53138068f07c6b6379afd7dbc90956331
|
||||||
|
assets/CouponsView-D8TyS2Q2.css,1771701423866,bfb1d6032738efa2153b0400dfd1271672bbafd326e601d074245e81d1364cca
|
||||||
|
assets/couponsService-DnZ7ehJT.js,1771701423869,2f9fdf6adc01af9cb545aa26753a2172decb3acafd79afcd02a3df53f479aba5
|
||||||
|
assets/CouponsView-BgE5dH6x.js,1771701423866,f42bc9fb8fb62985b814787bf14d27694422e8c562818e5c3782ea8f21c81779
|
||||||
|
assets/busStopsService-ePHl2Fng.js,1771701423866,f6fd0d1eed831dc742949cd90e0a4cfa8d6aa082df67ead056e948fd76652cec
|
||||||
|
assets/coupon-njXibeHC.js,1771701423866,fba6d6327e0c0c6a1cc6b6511f47ff96017a89bf66f01b0af3f319e6a59c4211
|
||||||
|
assets/BusStopDetailsView-YPniKC_7.css,1771701423866,f485fb81a011121e0c779b173704f7c90c1868d0770ec43b473a037d09b0b537
|
||||||
|
assets/BusStopDetailsView-DGAFs-_m.js,1771701423866,b3355928a7f3773dc299b99916978c764dd0293cfc4c0c03de8c1af6b5a6de0a
|
||||||
|
assets/busStop-BphYGYEJ.js,1771701423866,31a2c03d48c56217acaf741bee20755c738cc573f7a3b455229e48ca2b3b9a4d
|
||||||
|
assets/businessService-Cq3uIvpr.js,1771701423869,ec9a9d42666d4bd66acadf23574f304981963f55c8b6d4a44c971bd9bed8c6d2
|
||||||
|
assets/BusinessDetailsView-DiLGXDia.js,1771701423866,96b9e48c2e5d73c23d5a0cd4b2bd4bb2ac103dc7422d7c5617f23c4804590f84
|
||||||
|
assets/BusinessDetailsView-B54egNo4.css,1771701423866,b98466538682838251a16af1c1fe6a7fe983a19b8e0594fd5f745d090e474599
|
||||||
|
assets/AuthView-wpzvuYkR.js,1771701423866,a6ae929cb7440557d7a61f83898c225b25f13bf2e1550a8ea73f2a078c6cee67
|
||||||
|
assets/AuthView-BfDSXMHM.css,1771701423866,a808f3dc76eaa54ad6f63c8dc7c9e284462d6c4744cd7dba4a655781d7b03d22
|
||||||
|
assets/authService-BYI0pd9k.js,1771701423869,5072683784140a68579172c36fa07bedd12b78f431d3c6b878a217ac61c38a32
|
||||||
|
assets/AdminTaxis-DXv2SihK.js,1771701423869,0d70ee99be929e2339c7e222a318d1ea3ce805d2ce444319da3cd8e24db67ef3
|
||||||
|
assets/AdminTaxis-D5tKQm5A.css,1771701423866,7fcc4c4a87d40432b931283cd8a8fe4665b6677ae68104be82d2052cd71512be
|
||||||
|
assets/AdminShuttles-yF67L9qg.css,1771701423866,defef4c13ef89ec7236617046186f29c3d4fb08f022a78d469ce849eb36f516c
|
||||||
|
assets/AdminSchedules-BXJrrlUo.js,1771701423866,4e80dbbb46ae539284ba44418fa023a51556353c41f74193f5537bccc1a61c1e
|
||||||
|
assets/AdminShuttles-ClssaZJj.js,1771701423869,d1777aa4a8b4bd5c4d6a7d5959663335c8ce1a6b963da44c4587ec90654d8d78
|
||||||
|
assets/AdminSchedules-BOxr18pA.css,1771701423866,ab3196c8f27a0cf9b6579d3751c2e43ab4b846035060754c9a2ae9109da86ec0
|
||||||
|
assets/AdminRoutes-Cz8oNNEE.css,1771701423866,9e30d2bfdaea7996f84e95fcaebd67a79f0d5a89a0a861acae8e294b0e86a5b0
|
||||||
|
assets/AdminReports-z8gGKCWG.js,1771701423866,79f5435520e4727bf583b439c9c784c00a313d1ac1af7db8e22a0aa08e014854
|
||||||
|
assets/AdminReports-B-dcDjo2.css,1771701423866,36d5447431cad2edc2a6218f65bc7d310d22ffbc151661a08ae1a52447969684
|
||||||
|
assets/AdminRoutes-B7hvq2XV.js,1771701423866,06c3dd6a3a93e46f2f7915957d9d92d22d7a6119b7d028d5482f6bc7e8635196
|
||||||
|
assets/AdminPanel-DOwcfQQZ.css,1771701423866,123dc97d83d33c8050b10aa70161d4f3a36237fc66a352ad94e4180c6cd1bb7f
|
||||||
|
assets/AdminPanel-BsHoEv1c.js,1771701423866,8bf0306cb619d0c6d926097950f0e153ae194ba96be27bc2be5145d8365dbae1
|
||||||
|
assets/AdminBusStops-BREqyMXj.css,1771701423866,9fde17317de1d24a70a3e37ea33886f77f8b87b4b1cc486070e4c98764016d8a
|
||||||
|
assets/AdminDrivers-CuETipci.css,1771701423866,c1b8793aa0eb6c662e1c64899af466bfe79352e28b6fe9748627a4879089ec3b
|
||||||
|
assets/AdminDrivers-B85aGox9.js,1771701423869,da606add7e119ac2cc033dbb27d3491431c188ae428775f7c741fdd28781b05a
|
||||||
|
assets/AdminBusStops-Dvoluhtq.js,1771701423866,80efedce9877212cea6a0396d1a437d1ec32f06597570e1e2c042dde2e7d306b
|
||||||
|
assets/index.es-DphPHOdB.js,1771701423870,810a8cc4a963a0ce53c5a8591b499b88dd41761bf342bee861ab256c34fe4a3e
|
||||||
|
assets/index-d9DWcGZK.js,1771701423866,fc1edb9741371b0502b29347271cfe2eb31c0ab2a775cd6b272d17e6f3ecf6d3
|
||||||
|
assets/StrategicAnalytics-BeeyZFf_.js,1771701423870,9fe53948bd64a1037ca06861aad52f49d4475c9fcd8253ba5bdae3a3a70646bc
|
||||||
5
frontend/.firebaserc
Normal file
5
frontend/.firebaserc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"projects": {
|
||||||
|
"default": "sibu2-0-transport-2026"
|
||||||
|
}
|
||||||
|
}
|
||||||
16
frontend/firebase.json
Normal file
16
frontend/firebase.json
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"hosting": {
|
||||||
|
"public": "dist",
|
||||||
|
"ignore": [
|
||||||
|
"firebase.json",
|
||||||
|
"**/.*",
|
||||||
|
"**/node_modules/**"
|
||||||
|
],
|
||||||
|
"rewrites": [
|
||||||
|
{
|
||||||
|
"source": "**",
|
||||||
|
"destination": "/index.html"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
8607
frontend/package-lock.json
generated
8607
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -5,7 +5,7 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
"build": "vue-tsc -b && vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@ -16,6 +16,7 @@
|
|||||||
"@googlemaps/js-api-loader": "^2.0.2",
|
"@googlemaps/js-api-loader": "^2.0.2",
|
||||||
"axios": "^1.13.2",
|
"axios": "^1.13.2",
|
||||||
"chart.js": "^4.5.1",
|
"chart.js": "^4.5.1",
|
||||||
|
"firebase-tools": "^15.7.0",
|
||||||
"html2canvas": "^1.4.1",
|
"html2canvas": "^1.4.1",
|
||||||
"jspdf": "^4.1.0",
|
"jspdf": "^4.1.0",
|
||||||
"pinia": "^3.0.4",
|
"pinia": "^3.0.4",
|
||||||
|
|||||||
@ -1,23 +1,18 @@
|
|||||||
/** Base API client for making HTTP requests to the backend */
|
/** Base API client for making HTTP requests to the backend */
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import type { AxiosInstance, AxiosError } from 'axios'
|
|
||||||
|
|
||||||
export const API_URL = import.meta.env.VITE_API_URL || 'http://localhost:8000'
|
export const API_URL = import.meta.env.VITE_API_URL || 'http://localhost:8000'
|
||||||
|
|
||||||
class ApiClient {
|
const client = axios.create({
|
||||||
private client: AxiosInstance
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.client = axios.create({
|
|
||||||
baseURL: API_URL,
|
baseURL: API_URL,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
},
|
},
|
||||||
timeout: 10000,
|
timeout: 10000,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Request interceptor
|
// Request interceptor
|
||||||
this.client.interceptors.request.use(
|
client.interceptors.request.use(
|
||||||
(config) => {
|
(config) => {
|
||||||
const token = localStorage.getItem('auth_token')
|
const token = localStorage.getItem('auth_token')
|
||||||
if (token) {
|
if (token) {
|
||||||
@ -28,32 +23,18 @@ class ApiClient {
|
|||||||
(error) => {
|
(error) => {
|
||||||
return Promise.reject(error)
|
return Promise.reject(error)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
// Response interceptor
|
// Response interceptor
|
||||||
this.client.interceptors.response.use(
|
client.interceptors.response.use(
|
||||||
(response) => response,
|
(response) => response,
|
||||||
(error: AxiosError) => {
|
(error) => {
|
||||||
// Handle common errors
|
|
||||||
if (error.response) {
|
if (error.response) {
|
||||||
// Server responded with error status
|
|
||||||
console.error('API Error:', error.response.status, error.response.data)
|
console.error('API Error:', error.response.status, error.response.data)
|
||||||
} else if (error.request) {
|
|
||||||
// Request made but no response
|
|
||||||
console.error('Network Error:', error.request)
|
|
||||||
} else {
|
|
||||||
// Something else happened
|
|
||||||
console.error('Error:', error.message)
|
|
||||||
}
|
}
|
||||||
return Promise.reject(error)
|
return Promise.reject(error)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
get instance(): AxiosInstance {
|
|
||||||
return this.client
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const apiClient = new ApiClient().instance
|
|
||||||
|
|
||||||
|
export const apiClient = client
|
||||||
|
export default apiClient
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted, computed } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { API_URL } from '@/services/apiClient';
|
import { API_URL } from '@/services/apiClient';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|||||||
@ -267,7 +267,7 @@ import jsPDF from 'jspdf';
|
|||||||
import html2canvas from 'html2canvas';
|
import html2canvas from 'html2canvas';
|
||||||
|
|
||||||
const generateReport = async () => {
|
const generateReport = async () => {
|
||||||
const loadingNotify = ref(true); // Podríamos añadir un pequeño indicator de "Generando..."
|
// const loadingNotify = ref(true); // Podríamos añadir un pequeño indicator de "Generando..."
|
||||||
const date = new Date().toLocaleDateString('es-ES', { month: 'long', year: 'numeric' });
|
const date = new Date().toLocaleDateString('es-ES', { month: 'long', year: 'numeric' });
|
||||||
const doc = new jsPDF('p', 'mm', 'a4');
|
const doc = new jsPDF('p', 'mm', 'a4');
|
||||||
const pageWidth = doc.internal.pageSize.getWidth();
|
const pageWidth = doc.internal.pageSize.getWidth();
|
||||||
|
|||||||
Reference in New Issue
Block a user