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.
| 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 |
- 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
- 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
- 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
- View all participants' journeys on an interactive map
- Click marker to see Barcelona map
- Responsive design for mobile and desktop
- Comprehensive management panel for administrators
- Video content management (CRUD operations)
- User management
- Content moderation capabilities
- Upload and manage video content
- User profile and preferences
- Video content management (CRUD operations)
- 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
- Support for multiple languages via i18next
- Browser language detection
- Easy language switching
- Translated UI elements
- Mobile-first design approach
- Optimized for all screen sizes (mobile, tablet, desktop)
- Accessible navigation
- Touch-friendly interface
- 3D animated elements on landing page
The application follows a component-based architecture with clear separation of concerns:
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
- React 19
- npm β₯ 10.x
- Backend server running on
http://localhost:8080
- Clone the repository
git clone https://github.com/La-Quinta-Pata/front.git
cd front- Install dependencies
npm install- Configure environment variables
Create a
.env.localfile in the root directory:
VITE_API_BASE_URL=http://localhost:8080/api- Start the development server
npm run devThe application will be available at http://localhost:5173
The project includes comprehensive tests:
# Run all tests
npm testThe project uses feature branch workflow:
main- Production-ready codedev- Development integration branchfeature/*- Feature branches for new functionalityfix/*- Bug fix brancheschore/*- Maintenance and polish branches
| Role | Name | GitHub | |
|---|---|---|---|
| π§ Product Owner & Developer | Suraya Mattar | GitHub | |
| π§© Scrum Master & Developer | Daniella Pacheco | GitHub | |
| π» Developer | Ana Aguilera | GitHub | |
| π» Developer | Montserrat MuΓ±oz | GitHub | |
| π» Developer | EstefanΓa Secanell | GitHub | |
| π» Developer | Mio Ogura | GitHub |