Skip to content
La-Quinta-PataPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

304 Commits

Folders and files

Repository files navigation

La Quinta Pata - Frontend

🎯 Project Overview

The Community Archive of Migrant Memories Exhibition (MACMM) is a web platform created to catalog and disseminate audiovisual records that narrate migrant experiences. The videos are organized into five thematic axes: autobiography, objects, discrimination based on origin, gender discrimination, and resistance. In addition to the catalog, the platform allows users to view the participants’ journeys to Barcelona on an interactive map and to consult general information about the project and its team. Built with React (frontend), Spring Boot (backend), and PostgreSQL (database), the application follows an MVC architecture and implements a RESTful API.

πŸ“Έ Screenshots

Screen Shot 2025-12-17 at 15 47 20 Screen Shot 2025-12-17 at 15 47 34 Screen Shot 2025-12-17 at 15 47 49

βš™οΈ Technology Stack

Category Technologies
Frontend Framework React 19 + Vite 7
Styling Tailwind CSS v4 + PostCSS
Routing React Router DOM v7
State Management React Context API (Auth, Toast)
HTTP Client Axios with JWT Authentication
UI Components & Icons Lucide React + React Icons
Notifications React Hot Toast
Testing Vitest
Version Control Git + GitHub

✨ Features

πŸ”“ Public Access

  • Landing page with platform overview
  • Hero section with call-to-action
  • Features showcase
  • How it works section
  • Participants and collaborators information
  • Video catalog browsing
  • Interactive map showing participants' journeys
  • Footer with links and information

πŸ” Authentication

  • User registration with email and password
  • Secure login with JWT tokens in Authorization header
  • Persistent authentication (localStorage)
  • Secure logout functionality
  • Password visibility toggle
  • Form validation with error messages
  • Admin authentication for management panel

πŸ“Ή Video & Content Management

  • Browse: View all videos organized by thematic axes
  • Search: Find videos by title, keywords, and themes
  • Filter: Filter content by categories (autobiography, objects, discrimination, gender, resistance)
  • Details: View comprehensive video information and metadata
  • User comments and community engagement
  • Video player with controls

πŸ“ Interactive Map

  • View all participants' journeys on an interactive map
  • Click marker to see Barcelona map
  • Responsive design for mobile and desktop

πŸŽ›οΈ Admin Dashboard

  • Comprehensive management panel for administrators
  • Video content management (CRUD operations)
  • User management
  • Content moderation capabilities
  • Upload and manage video content

πŸ“Š User Dashboard

  • User profile and preferences
  • Video content management (CRUD operations)

πŸ”” User Feedback

  • Toast notifications for success messages
  • Toast notifications for error messages
  • Toast notifications for warnings
  • Loading spinner during async operations
  • Error boundary for handling runtime errors
  • Form validation feedback

🌍 Multilingual Support

  • Support for multiple languages via i18next
  • Browser language detection
  • Easy language switching
  • Translated UI elements

πŸ“± Responsive Design

  • Mobile-first design approach
  • Optimized for all screen sizes (mobile, tablet, desktop)
  • Accessible navigation
  • Touch-friendly interface
  • 3D animated elements on landing page

🧭 Architecture

The application follows a component-based architecture with clear separation of concerns:

Directory Structure

src/
β”œβ”€β”€ assets/
β”‚   └── images/
β”‚       β”œβ”€β”€ collaboration/
β”‚       β”œβ”€β”€ team/
β”‚       β”œβ”€β”€ ImagenTitulo.png
β”‚       β”œβ”€β”€ Logo_macmm.png
β”‚       └── map.jpg
β”‚
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ cards/
β”‚   β”‚   β”œβ”€β”€ AcademicCollaboCard.jsx
β”‚   β”‚   β”œβ”€β”€ DevTeamCard.jsx
β”‚   β”‚   └── TeamCard.jsx
β”‚   β”œβ”€β”€ login/
β”‚   β”‚   β”œβ”€β”€ AdminRouter.jsx
β”‚   β”‚   β”œβ”€β”€ Button.jsx
β”‚   β”‚   β”œβ”€β”€ EditProfileForm.jsx
β”‚   β”‚   β”œβ”€β”€ ErrorMessage.jsx
β”‚   β”‚   β”œβ”€β”€ FormActions.jsx
β”‚   β”‚   β”œβ”€β”€ FormHeader.jsx
β”‚   β”‚   β”œβ”€β”€ InputField.jsx
β”‚   β”‚   β”œβ”€β”€ LoginForm.jsx
β”‚   β”‚   β”œβ”€β”€ PrivateRoute.jsx
β”‚   β”‚   β”œβ”€β”€ RegisterForm.jsx
β”‚   β”‚   └── SelectField.jsx
β”‚   β”œβ”€β”€ map/
β”‚   β”‚   β”œβ”€β”€ AnimatedRoute.jsx
β”‚   β”‚   β”œβ”€β”€ Globe.jsx
β”‚   β”‚   β”œβ”€β”€ GlobeExperience.jsx
β”‚   β”‚   └── MarkerPin.jsx
β”‚   β”œβ”€β”€ sections/
β”‚   β”‚   β”œβ”€β”€ AboutUsSection.jsx
β”‚   β”‚   β”œβ”€β”€ Collaboration.jsx
β”‚   β”‚   β”œβ”€β”€ Hero.jsx
β”‚   β”‚   β”œβ”€β”€ Information.jsx
β”‚   β”‚   β”œβ”€β”€ Team.jsx
β”‚   β”‚   └── Title.jsx
β”‚   β”œβ”€β”€ themes/
β”‚   β”‚   └── ThemeForm.jsx
β”‚   β”œβ”€β”€ toasts/
β”‚   β”‚   β”œβ”€β”€ ConfirmToast.jsx
β”‚   β”‚   └── MyToast.jsx
β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   └── Pagination.jsx
β”‚   └── videos/
β”‚       β”œβ”€β”€ AxisSidebar.jsx
β”‚       β”œβ”€β”€ Card.jsx
β”‚       β”œβ”€β”€ EditVideoForm.jsx
β”‚       β”œβ”€β”€ FormButtons.jsx
β”‚       β”œβ”€β”€ FormField.jsx
β”‚       β”œβ”€β”€ FormModal.jsx
β”‚       β”œβ”€β”€ VideoActions.jsx
β”‚       β”œβ”€β”€ VideoForm.jsx
β”‚       └── VideoModal.jsx
β”‚
β”œβ”€β”€ context/
β”‚   β”œβ”€β”€ AuthContext.jsx
β”‚   └── AuthProvider.jsx
β”‚
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ academicCollaborationData.js
β”‚   β”œβ”€β”€ collaborationData.js
β”‚   β”œβ”€β”€ teamData.js
β”‚   └── webDesignData.js
β”‚
β”œβ”€β”€ hooks/
β”‚   β”œβ”€β”€ useAuth.js
β”‚   β”œβ”€β”€ useLoginForm.jsx
β”‚   β”œβ”€β”€ useRegisterForm.jsx
β”‚   β”œβ”€β”€ useVideoForm.jsx
β”‚   └── useVideoFormData.js
β”‚
β”œβ”€β”€ layout/
β”‚   β”œβ”€β”€ Footer.jsx
β”‚   β”œβ”€β”€ LanguageSwitcher.jsx
β”‚   β”œβ”€β”€ Layout.jsx
β”‚   β”œβ”€β”€ Navbar.jsx
β”‚   β”œβ”€β”€ PageBanner.jsx
β”‚   β”œβ”€β”€ ScrollUpButton.jsx
β”‚   └── Wave.jsx
β”‚
β”œβ”€β”€ pages/
β”‚   β”œβ”€β”€ AboutUs.jsx
β”‚   β”œβ”€β”€ Catalog.jsx
β”‚   β”œβ”€β”€ Contact.jsx
β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚   β”œβ”€β”€ Home.jsx
β”‚   β”œβ”€β”€ Login.jsx
β”‚   β”œβ”€β”€ Register.jsx
β”‚   └── ThemesManager.jsx
β”‚
β”œβ”€β”€ router/
β”‚   └── Router.jsx
β”‚
β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ auth.js
β”‚   β”œβ”€β”€ axes.js
β”‚   β”œβ”€β”€ catalogService.js
β”‚   β”œβ”€β”€ config.js
β”‚   β”œβ”€β”€ countries.js
β”‚   β”œβ”€β”€ migrants.js
β”‚   β”œβ”€β”€ themesService.js
β”‚   β”œβ”€β”€ user.js
β”‚   └── videos.js
β”‚
β”œβ”€β”€ tests/
β”‚   β”œβ”€β”€ cards/
β”‚   β”œβ”€β”€ login/
β”‚   β”œβ”€β”€ map/
β”‚   β”œβ”€β”€ sections/
β”‚   β”œβ”€β”€ services/
β”‚   β”œβ”€β”€ toasts/
β”‚   └── videos/
β”‚
β”œβ”€β”€ translation/
β”‚   β”œβ”€β”€ index.js
β”‚   └── locales/
β”‚       β”œβ”€β”€ ca/
β”‚       └── es/
β”‚
β”œβ”€β”€ utils/
β”‚   β”œβ”€β”€ getEmbedUrl.jsx
β”‚   β”œβ”€β”€ latLonToXYZ.js
β”‚   β”œβ”€β”€ videoFormConfig.js
β”‚   └── videoHelpers.js
β”‚
β”œβ”€β”€ App.jsx
└── main.jsx

πŸš€ Getting Started

Prerequisites

  • React 19
  • npm β‰₯ 10.x
  • Backend server running on http://localhost:8080

Installation

  1. Clone the repository
git clone https://github.com/La-Quinta-Pata/front.git
cd front
  1. Install dependencies
npm install
  1. Configure environment variables Create a .env.local file in the root directory:
VITE_API_BASE_URL=http://localhost:8080/api
  1. Start the development server
npm run dev

The application will be available at http://localhost:5173

πŸ§ͺ Testing

The project includes comprehensive tests:

# Run all tests
npm test

πŸ“ Git Workflow

The project uses feature branch workflow:

  • main - Production-ready code
  • dev - Development integration branch
  • feature/* - Feature branches for new functionality
  • fix/* - Bug fix branches
  • chore/* - Maintenance and polish branches

πŸ‘₯ Team Members

Role Name GitHub LinkedIn
🧠 Product Owner & Developer Suraya Mattar GitHub LinkedIn
🧩 Scrum Master & Developer Daniella Pacheco GitHub LinkedIn
πŸ’» Developer Ana Aguilera GitHub LinkedIn
πŸ’» Developer Montserrat MuΓ±oz GitHub LinkedIn
πŸ’» Developer EstefanΓ­a Secanell GitHub LinkedIn
πŸ’» Developer Mio Ogura GitHub LinkedIn

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages