Skip to content

Conversation

KidFromCalifornia
Copy link

@KidFromCalifornia KidFromCalifornia commented Aug 31, 2025

deplpyment
Netlify : https://stockholmscoffeeclub.netlify.app/
render: srv-d2ncn3f5r7bs73fdhe9g

and soon at Stockholmscoffeeclub.com

(work in progress as of 01092025)

Stockholm Coffee Club - Final Project
A full-stack coffee discovery app for Stockholm's specialty coffee scene built with modern web technologies.

Tech Stack
Frontend: React 18, Material-UI, MapLibre GL, React Router, Zustand, Styled Components, Vite

Backend: Node.js, Express, MongoDB, Mongoose, JWT Authentication, bcryptjs, Zod validation

External Libraries: Material-UI for UI components, MapLibre GL for interactive maps, SweetAlert2 for alerts, React Icons, WebFontLoader, RC Drawer for mobile navigation

Development Tools: Vite build tool, ESLint, Prettier, Nodemon, Babel

Deployment: Render cloud platform, GitHub repository

Features

  • Interactive map of Stockholm coffee shops with filtering
  • User authentication and profiles
  • Coffee tasting notes and reviews
  • Cafe submission system with admin approval
  • Search and discovery functionality
  • Responsive mobile-first design
  • Admin dashboard for content management
  • Architecture
  • Full-stack MERN application with RESTful API design, component-based React frontend, and MongoDB database. Deployed as separate frontend and backend services on Render.

Built by Jonathan Hicks as Technigo Bootcamp final project.

…onnection, add user authentication, and create models/routes for cafes and submissions
…ssions and cafes, and implement seeding functionality for Stockholm cafes

- Deleted CafeSubmission model as it was no longer needed.
- Updated CoffeeTasting model to change user reference from 'user' to 'userId' and cafe reference from 'cafe' to 'cafeId'.
- Enhanced UserTastings routes to include additional cafe fields in population and improved error handling.
- Refactored cafeSubmissions routes to support pagination, filtering, and improved submission handling (approve/reject).
- Updated cafes routes to support advanced filtering, search suggestions, and nearby cafes functionality.
- Added seedCafes utility to populate the database with predefined Stockholm cafes and integrated it into the server.
…, improve search functionality, and update seed data for cafes and tastings
…ngs; update CoffeeTasting model to allow optional fields; enhance API documentation endpoint with detailed route information
feat: Create LoginForm component for user authentication with signup option

feat: Add NavBar component with search functionality and login/logout options

chore: Create empty NewCafeForm, TastingForm, AdminPage, CafePage, HomePage, TastingsPage, UserPage components

feat: Establish API service with functions for cafe and tasting data retrieval and user authentication
…ement metadata route for form options adding to dynamic opt
…ed enums declaration in metadata route; update TastingForm to improve UI and replace select inputs with range sliders for better user experience
… add MapPage component and update routing; replace HomePage with MapPage in navigation
…astingsPage to use fetch and invoke seedTastingNotes
…h username or email, and improve error messages

user is still not found
…se-insensitive username or email, add user ID to local storage, and implement tasting management features including deletion and editing
…for consistency and improve deletion logic. buttons visable
…, improve user experience, and update cafe model to support multiple locations and optional fields.
- Implemented a JWT decoding function with error handling for invalid tokens.
- Added a new CSS file for Leaflet map styles, including various UI components and responsive design adjustments.
…Cafes utility

fix: Update MapPage to conditionally render markers based on valid coordinates
… improve error handling

- Replaced Nominatim geocoding with OpenCage API in seedCafes.js
- Adjusted cache structure to store results from OpenCage
- Added dotenv configuration for API key management
- Updated geocoding logic to handle missing geometry and improved error messages
- Modified CafeSearchBar to use Zustand for state management
- Refactored LoginForm to utilize Zustand for error and loading states
- Cleaned up NavBar by removing unnecessary links
- Enhanced TastingForm to use Zustand for state management and improved data fetching
- Updated MapPage to use Zustand for cafes state and added loading logic
- Implemented search functionality in TastingsPage with pagination
- Added missing cafeId fix script for tastings based on neighborhood
- Introduced Zustand store for centralized state management across components
- Updated package.json to include Zustand dependency
…components

- Added seed script for tasting notes with detailed coffee information.
- Implemented user seeding script with hashed passwords for security.
- Created reusable Button, CheckboxInput, SelectInput, TextInput, and SwalAlertStyles components for consistent UI.
remove outdated info and  updated live links.
- Integrated axe-core for accessibility testing in development mode.
- Updated components
- Created a11y-docs.md for documenting accessibility practices and tools.
- Replaced SwalAlertStyles with a new AlertContext for snackbar and dialog notifications.
- Updated NewCafeForm and TastingForm to use the new snackbar for error handling.
- Lazy loaded LoginForm, NewCafeForm, and TastingForm in DesktopNavBar, MobileBottomNav, and TastingsPage for better performance.
- Enhanced typography and component styles in the theme.
- Added checkAuth method to authAPI and improved error handling in useCafeStore.
- Removed unused SwalAlertStyles file.
…ures

- Added functionality for toggling cafe submission forms and handling submissions.
- Implemented pagination and search filtering for user tastings.
- Introduced tab navigation for better organization of cafe submissions and tastings.
- Improved UI elements with tooltips and responsive design adjustments.
- Refactored tasting submission logic to streamline API interactions.
- Enhanced styling for FlipTastingCard and typography for better readability and aesthetics.
- Added aria-labels to IconButtons in DesktopNavBar and MobileBottomNav for better screen reader support.
- Wrapped Dialog components in ListItem for improved semantic structure in DesktopNavBar.
- Improved scrollbar visibility handling in MobileBottomNav.
- Updated color handling for specialty category in MapIcons based on theme mode.
- Adjusted typography variants and colors in MapLegend for better readability.
- Refined Popup styling in MapLibreMap for consistent design.
- Removed custom icon mapping in AlertContext to simplify Snackbar usage.
- Commented out axe-core accessibility testing in main.jsx for production builds.
- Added roles and aria-labels to lists and list items in AboutMePage and UserPage for enhanced accessibility.
- Implemented unique keys for mapped components in AdminPage and UserPage to prevent React warnings.
- Improved error handling in CafePage for better user feedback on network issues.
- Enhanced filtering logic in MapPage to dynamically compute filter options.
- Updated pagination logic in TastingsPage to implement a "Load More" feature instead of traditional pagination.
- Ensured unique keys for mapped tastings in TastingsPage to avoid potential rendering issues.
- Adjusted colors in theme for better contrast and accessibility.
…essibility

set up image build fro deployment
- Created a manifest.json file for PWA configuration, including app details and icons.
…yles, improve accessibility, and enhance visual hierarchy. Update NavigationItems to remove Add Cafe option for logged-in users. Enhance TastingsPage with Tooltip for better user experience. Adjust color scheme in theme for improved readability. Update component overrides in theme for consistent styling across Material-UI components. Refine typography settings for better text visibility. Fix Vite config to ensure proper asset handling.
…adingLogo component to use imported SVG assets
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant