diff --git a/README.md b/README.md index 31466b54c..6e8fff027 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,31 @@ -# Final Project +# Museek - Where curiostiy meets culture. -Replace this readme with your own information about your project. +Whenever you find yourself in a new city, wondering what to do, our webpage could give a way to explore lesser-known museums around the globe, offering an authentic alternative to the mainstream tourist attractions. -Start by briefly describing the assignment in a sentence or two. Keep it short and to the point. +It allows you to discover museums in a fun interactive way, giving you inspiration for your next trip. ## The problem -Describe how you approached to problem, and what tools and techniques you used to solve it. How did you plan? What technologies did you use? If you had more time, what would be next? +For our final project we were requested to created web page from scratch. We were given 3 weeks to develop and deliver a functional backend with a friendly user frontend. + +The first week, we began by brainstorming ideas based on our hobbies and preferences so we can later blend them with features that we thought our final user may find useful. +After defining the propose of our webpage, we began to build our backend, together with our routes, models and authentication. +Second week, we focus on creating the design of our frontend, together with the multiple pages that matches our backend endpoints. +During the last week, we paid close attention on executing a smoothly navigation flow as well as adjusting our CSS keeping in mind our objective to provide our final user a practical, enjoyable and enlightening experience through our page. + +Altogether our project was carefully created, following the code guidelines of not repeating, organised and clean code. Our MVP was completed as well as some of our stretch goals, but if we could have more time we will add the feature to translate our page content to French and Spanish languages. + +## Technologies + +For the backend; we utilise Mongoose, Mongo DB, Express, Node.js +For the frontend; we worked with React hooks such as useState, useEffect, useContext. Also some libraries, such as, React-Router, Star Ratings, Select, Leaflet and Styled Components for the design. ## View it live -Every project should be deployed somewhere. Be sure to include the link to the deployed project so that the viewer can click around and see what it's all about. \ No newline at end of file +Frontend: https://museek-project.netlify.app/ +Backend: https://museek-2ejb.onrender.com/ + +## Connect with us + +Alma Herrström: https://github.com/almaherris/ +Etna Zuniga: https://github.com/Caracal23/ diff --git a/backend/README.md b/backend/README.md deleted file mode 100644 index d1438c910..000000000 --- a/backend/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Backend part of Final Project - -This project includes the packages and babel setup for an express server, and is just meant to make things a little simpler to get up and running with. - -## Getting Started - -1. Install the required dependencies using `npm install`. -2. Start the development server using `npm run dev`. \ No newline at end of file diff --git a/backend/controllers/authController.js b/backend/controllers/authController.js new file mode 100644 index 000000000..6ba13f799 --- /dev/null +++ b/backend/controllers/authController.js @@ -0,0 +1,63 @@ +import bcrypt from "bcrypt"; +import { User } from "../models/User.js"; + +// User registration +export const registerUser = async (req, res) => { + const salt = bcrypt.genSaltSync(10); + + try { + const { name, email, password } = req.body; + + if (name === "" || email === "" || password === "") { + res.status(400).json({ message: "All fields are required" }); + } + + // Check if the user already exists + const existingUser = await User.findOne({ email: email.toLowerCase() }); + + if (existingUser) { + return res.status(409).json({ message: "User already exists" }); + } + + // Create new user + const user = new User({ + name, + email, + id: crypto.randomUUID(), + password: bcrypt.hashSync(password, salt), + }); + + await user.save(); + + return res + .status(201) + .json({ id: user._id, accessToken: user.accessToken }); + } catch (error) { + res.status(400).json({ + response: error.message, + success: false, + message: "Could not create user", + errors: error.errors, + }); + } +}; + +// User login +export const loginUser = async (req, res) => { + const { email, password } = req.body; + + const user = await User.findOne({ email: email.toLowerCase() }); + if (user && bcrypt.compareSync(password, user.password)) { + res.json({ userId: user._id, accessToken: user.accessToken }); + } else if (user && !bcrypt.compareSync(password, user.password)) { + // Wrong password + res.status(400).json({}); + } else { + // User does not exist + res.status(404).json({}); + } +}; + +export const getUserPage = (req, res) => { + res.json({ message: "You are logged in!", user: req.user }); +}; diff --git a/backend/controllers/favoriteController.js b/backend/controllers/favoriteController.js new file mode 100644 index 000000000..426d7b628 --- /dev/null +++ b/backend/controllers/favoriteController.js @@ -0,0 +1,100 @@ +import { application } from "express"; +import { SavedFavorites } from "../models/SavedFavorites.js"; +import { User } from "../models/User.js"; +import { Museum } from "../models/Museum.js"; + +export const toggleFavorite = async (req, res) => { + const { museumId, accessToken } = req.body; + + if (isNaN(museumId)) { + return res.status(400).json({ + success: false, + message: "Invalid museumId", + }); + } + + let savedAsFavorite; + + try { + const user = await User.findOne({ accessToken }); + if (await SavedFavorites.findOne({ museumId, userId: user.id })) { + await SavedFavorites.deleteOne({ museumId, userId: user.id }); + savedAsFavorite = false; + } else { + await SavedFavorites.create({ museumId, userId: user.id }); + savedAsFavorite = true; + } + + res.status(200).json({ success: true, savedAsFavorite }); + } catch (error) { + res.status(400).json({ + response: error.message, + succes: false, + message: "Something went wrong", + errors: error.errors || {}, + }); + } +}; + +export const likedMuseums = async (req, res) => { + const { accessToken } = req.body; + + try { + const user = await User.findOne({ accessToken }); + const likedMuseumsForUser = await SavedFavorites.find({ userId: user.id }); + const likedMuseumsWithMuseumInfo = await Promise.all( + likedMuseumsForUser.map(async (likedMuseum) => { + const museumInfo = await Museum.findOne({ + id: likedMuseum.museumId, + }); + return { + museumId: likedMuseum.museumId, + userId: likedMuseum.userId, + museum: { + name: museumInfo.name, + theme: museumInfo.theme, + description: museumInfo.description, + location: museumInfo.location, + lat: museumInfo.lat, + lon: museumInfo.lon, + ticket_price: museumInfo.ticket_price, + has_cafe: museumInfo.has_cafe, + website: museumInfo.website, + opening_hours: museumInfo.opening_hours, + id: museumInfo.id, + url: museumInfo.url, + }, + }; + }) + ); + res + .status(200) + .json({ success: true, likedMuseums: likedMuseumsWithMuseumInfo ?? [] }); + } catch (error) { + res.status(400).json({ + response: error.message, + succes: false, + message: "Something went wrong", + error: error.errors || {}, + }); + } +}; + +export const isMuseumLiked = async (req, res) => { + const museumId = req.params.museumId; + const { accessToken } = req.body; + + try { + const user = await User.findOne({ accessToken }); + const savedAsFavorite = + (await SavedFavorites.findOne({ museumId, userId: user.id })) != null; + res.status(200).json({ success: true, savedAsFavorite }); + } catch (error) { + res.status(400).json({ + response: error.message, + succes: false, + message: "Something went wrong", + error: error.errors || {}, + }); + } +}; diff --git a/backend/controllers/museumController.js b/backend/controllers/museumController.js new file mode 100644 index 000000000..3b205e1fd --- /dev/null +++ b/backend/controllers/museumController.js @@ -0,0 +1,12 @@ +import { Museum } from "../models/Museum.js" + +// Get list of all museums +export const getMuseums = async (req, res) => { + try { + const museums = await Museum.find() + res.status(200).json(museums) + } catch (error) { + console.error("Error fetching museums:", error) + res.status(500).json({ error: "Internal server error" }) + } +} diff --git a/backend/controllers/reviewController.js b/backend/controllers/reviewController.js new file mode 100644 index 000000000..d2c10e476 --- /dev/null +++ b/backend/controllers/reviewController.js @@ -0,0 +1,93 @@ +import { Museum } from "../models/Museum.js"; +import { Review } from "../models/Review.js"; +import { User } from "../models/User.js"; + +export const getReviews = async (req, res) => { + try { + const reviews = await Review.find().sort({ createdAt: -1 }); + res.json(reviews); + } catch (error) { + res.status(500).json({ error: "Something went wrong" }); + } +}; + +// getReviewsForUser + +export const getReviewsForUser = async (req, res) => { + const { accessToken } = req.body; + + try { + const user = await User.findOne({ accessToken }); + const userReviews = await Review.find({ + userId: user.id, + }); + const userReviewsWhitMuseumsName = await Promise.all( + userReviews.map(async (review) => { + const museumInfo = await Museum.findOne({ + id: review.museumId, + }); + return { + museumId: review.museumId, + createdAt: review.createdAt, + userId: review.userId, + userName: review.userName, + message: review.message, + museumName: museumInfo.name, + rating: review.rating, + }; + }) + ); + res.status(200).json(userReviewsWhitMuseumsName); + } catch (error) { + res.status(400).json({ + response: error.message, + success: false, + message: "Could not get user reviews", + errors: error.errors, + }); + } +}; + +export const postReviews = async (req, res) => { + const { museumId, message, accessToken, rating } = req.body; + + if (isNaN(museumId)) { + return res.status(400).json({ + success: false, + message: "Invalid museumId", + }); + } + + try { + const user = await User.findOne({ accessToken }); + const review = await Review.create({ + museumId, + message, + userId: user.id, + userName: user.name, + rating: rating, + }); + res.status(201).json(review); + } catch (error) { + res.status(400).json({ + response: error.message, + success: false, + message: "Could not create message", + errors: error.errors, + }); + } +}; + +export const deleteReviews = async (req, res) => { + const reviewId = req.params.id; + + try { + const review = await Review.findByIdAndDelete(reviewId); + if (!review) { + return res.status(404).json({ message: "Review not found" }); + } + res.json({ message: "Review deleted successfully" }); + } catch (error) { + res.status(500).json({ error: "Something went wrong" }); + } +}; diff --git a/backend/data/museums.json b/backend/data/museums.json new file mode 100644 index 000000000..faf9fd521 --- /dev/null +++ b/backend/data/museums.json @@ -0,0 +1,2301 @@ +[ + { + "name": "Museum of Romantic Life", + "theme": "Romanticism", + "description": "The Museum of Romantic Life celebrates the spirit of Romanticism. Visitors can explore artifacts and artworks from the Romantic era. With free admission and a cozy café on-site, it offers a charming escape into the world of Romanticism.", + "location": "16 Rue Chaptal, 75009 Paris, France", + "lat": "48.880900", + "lon": "2.333280", + "ticket_price": "Free", + "has_cafe": true, + "website": "https://museevieromantique.paris.fr/fr", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 1, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575351/1-romance_jb7uqa.jpg", + "category": "Human and social themes" + }, + { + "name": "Musée Marmottan Monet", + "theme": "Impressionism", + "description": "Musée Marmottan Monet is a haven for lovers of Impressionism, featuring an extraordinary collection of Monet's masterpieces alongside works by other renowned Impressionist artists. The museum offers a captivating artistic journey through vibrant displays that highlight the beauty and innovation of this influential art movement.", + "location": "2 Rue Louis Boilly, 75016 Paris, France", + "lat": "48.862520", + "lon": "2.267200", + "ticket_price": "€12", + "has_cafe": false, + "website": "https://www.marmottan.fr/", + "opening_hours": [ + { + "Mon": "10:00-18:00" + }, + { + "Tue": "10:00-21:00" + }, + { + "Wed-Sun": "10:00-18:00" + } + ], + "id": 2, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575352/2-marmottan_foql3l.jpg", + "category": "Art movements" + }, + { + "name": "The Museum of Innocence", + "theme": "Literature and Fiction", + "description": "The Museum of Innocence celebrates literature and fiction. Inspired by Orhan Pamuk's novel, it showcases artifacts that evoke the narrative's essence. Offering a glimpse into fictional worlds, it's a must-visit for literature enthusiasts.", + "location": "Çukurcuma Caddesi Dalgıç Çıkmazı, 2, Beyoğlu, Istanbul, Turkey", + "lat": "41.031400", + "lon": "28.976800", + "ticket_price": "25 TRY", + "has_cafe": false, + "website": "https://www.masumiyetmuzesi.org/en", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 3, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575353/3-innocence_ly1svb.jpg", + "category": "Literature and History" + }, + { + "name": "The House of Alijn", + "theme": "Everyday Life", + "description": "The House of Alijn offers a glimpse into everyday life. Situated in the center of Gent, it invites visitors to explore the nuances of daily existence. It provides an immersive experience into the ordinary yet extraordinary aspects of life.", + "location": "Kraanlei 65, 9000 Gent, Belgium", + "lat": "51.057000", + "lon": "3.723500", + "ticket_price": "€8", + "has_cafe": true, + "website": "https://www.huisvanalijn.be/en", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Fri": "09:00-17:00" + }, + { + "Sat-Sun": "10:00-18:00" + } + ], + "id": 4, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575353/4-alijn_oy3ujk.jpg", + "category": "Human and social themes" + }, + { + "name": "Museum of the History of Medicine", + "theme": "Medical History", + "description": "The Museum of the History of Medicine delves into the fascinating journey of medical practices and innovations. Located in the vibrant city of Paris, it offers visitors a glimpse into the evolution of healthcare, from ancient remedies to modern breakthroughs.", + "location": "12 Rue de l'École de Médecine, 75006 Paris, France", + "lat": "48.850800", + "lon": "2.341400", + "ticket_price": "€3", + "has_cafe": false, + "website": "https://www.biusante.parisdescartes.fr/musee/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "14:00-17:30" + } + ], + "id": 5, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575369/5-medicine_biay29.jpg", + "category": "Literature and History" + }, + { + "name": "National Leprechaun Museum", + "theme": "Irish Folklore", + "description": "Immerse yourself in the enchanting world of Irish folklore at the National Leprechaun Museum. Nestled in the heart of Dublin, this museum brings to life tales of mythical creatures and ancient legends, offering visitors a captivating journey through Ireland's rich storytelling tradition.", + "location": "Jervis Street, Dublin, Ireland", + "lat": "53.347200", + "lon": "-6.267400", + "ticket_price": "€15", + "has_cafe": false, + "website": "https://www.leprechaunmuseum.ie/", + "opening_hours": [ + { + "Mon-Sun": "10:00-18:30" + } + ], + "id": 6, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575368/6-irishfolklore_xvg4x7.jpg", + "category": "Literature and History" + }, + { + "name": "The Cat Cabinet", + "theme": "Cats in Art", + "description": "Enter a whimsical realm where feline fascination meets artistic expression at The Cat Cabinet. Located in Amsterdam, this unique museum celebrates the cultural significance of cats in art and literature, captivating visitors with its purr-fect blend of creativity and charm.", + "location": "Herengracht 497, 1017 BT Amsterdam, Netherlands", + "lat": "52.364200", + "lon": "4.893600", + "ticket_price": "€7", + "has_cafe": false, + "website": "https://www.kattenkabinet.nl/", + "opening_hours": [ + { + "Mon-Fri": "10:00-17:00" + }, + { + "Sat-Sun": "12:00-17:00" + } + ], + "id": 7, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575370/7-catcabinet_engkhd.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Mini Bottle Gallery", + "theme": "Miniature Bottles", + "description": "Step into a world of tiny treasures at the Mini Bottle Gallery in Oslo. This one-of-a-kind museum showcases an extraordinary collection of miniature bottles, each with its own story to tell. Explore the city's vibrant art scene and indulge in the whimsical wonder of miniature artistry.", + "location": "Kirkegata 10, 0153 Oslo, Norway", + "lat": "59.911491", + "lon": "10.745117", + "ticket_price": "90 NOK", + "has_cafe": true, + "website": "https://www.minibottlegallery.com/", + "opening_hours": [ + { + "Mon-Fri": "Closed" + }, + { + "Sat": "12:00-16:00" + }, + { + "Sun": "12:00-16:00" + } + ], + "id": 8, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575369/8-minibottle_uust22.jpg", + "category": "Miscellaneous" + }, + { + "name": "Museo del Caracol", + "theme": "Mexican History", + "description": "Journey through the rich tapestry of Mexican history at the Museo del Caracol in Ciudad de México. From ancient civilizations to modern-day culture, this museum offers a captivating exploration of Mexico's heritage. Discover the soul of the city through the lens of its fascinating past.", + "location": "Calle de Luis Cabrera 7, San Ángel, Álvaro Obregón, 01000 Ciudad de México, CDMX, Mexico", + "lat": "19.345000", + "lon": "-99.189900", + "ticket_price": "70 MXN", + "has_cafe": false, + "website": "https://www.caracol.inah.gob.mx/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "09:00-17:00" + } + ], + "id": 9, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575370/9-caracol_ufgghn.jpg", + "category": "Literature and History" + }, + { + "name": "Museo de Arte Precolombino", + "theme": "Pre-Columbian Art", + "description": "Embark on a journey through ancient civilizations at the Museo de Arte Precolombino in Cusco. This museum showcases the rich cultural heritage of pre-Columbian societies, offering insight into their art, technology, and beliefs. Located in the historic city of Cusco, it provides a window into Peru's fascinating past.", + "location": "Calle San Lorenzo 104, Cusco 08002, Peru", + "lat": "-13.516700", + "lon": "-71.978800", + "ticket_price": "20 PEN", + "has_cafe": true, + "website": "https://mapcusco.pe/en/", + "opening_hours": [ + { + "Mon-Sun": "09:00-22:00" + } + ], + "id": 10, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575370/10-precolombian_xqoltf.jpg", + "category": "Literature and History" + }, + { + "name": "The Neon Museum", + "theme": "Neon Signs", + "description": "Step into the vibrant world of neon signs at The Neon Museum in Las Vegas. This unique museum preserves and celebrates the iconic signage of the city's past, showcasing these luminous artworks in a dazzling outdoor gallery. Explore the neon-lit streets of Las Vegas and discover the history behind its dazzling lights.", + "location": "770 Las Vegas Blvd N, Las Vegas, NV 89101, USA", + "lat": "36.178330", + "lon": "-115.134180", + "ticket_price": "$20", + "has_cafe": false, + "website": "https://www.neonmuseum.org/", + "opening_hours": [ + { + "Mon-Sun": "14:00-22:00" + } + ], + "id": 11, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575371/11-neonmuseum_sihmmq.jpg", + "category": "Miscellaneous" + }, + { + "name": "The Fan Museum", + "theme": "Hand Fans", + "location": "12 Crooms Hill, Greenwich, London SE10 8ER, UK", + "description": "Experience the elegance of hand fans at The Fan Museum in Greenwich. This charming museum houses a stunning collection of decorative fans from around the world, offering a glimpse into the artistry and craftsmanship of this timeless accessory. Located in the picturesque neighborhood of Greenwich, it's a hidden gem waiting to be discovered.", + "lat": "51.478800", + "lon": "-0.009000", + "ticket_price": "£5", + "has_cafe": true, + "website": "http://www.thefanmuseum.org.uk/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sat": "11:00-17:00" + }, + { + "Sun": "12:00-17:00" + } + ], + "id": 12, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575371/12-fanmuseum_g5izlc.jpg", + "category": "Miscellaneous" + }, + { + "name": "Museum of Vampires and Legendary Creatures", + "theme": "Vampires and Legends", + "description": "Uncover the mysteries of vampires and legendary creatures at the Museum of Vampires in Les Lilas. This fascinating museum explores the folklore and mythology surrounding these nocturnal beings, delving into their origins and cultural significance. Located in the enchanting city of Les Lilas, it's a must-visit for fans of the supernatural.", + "location": "14 Rue Jules David, 93260 Les Lilas, France", + "lat": "48.878700", + "lon": "2.416900", + "ticket_price": "€8", + "has_cafe": false, + "website": "https://officiel-galeries-musees.fr/lieu/musee-des-vampires-et-monstres-de-limaginaire/", + "opening_hours": [ + { + "Mon-Sun": "14:00-18:00" + } + ], + "id": 13, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575375/13-vampires_asqbaa.jpg", + "category": "Cultural Symbols" + }, + { + "name": "The Clown Museum", + "theme": "Clowns", + "description": "Step into a world of laughter and whimsy at The Clown Museum in Leipzig. This quirky museum celebrates the art of clowning, showcasing costumes, props, and memorabilia from clown performances around the world. Located in the charming city of Kiel, it offers a delightful escape into the colorful world of clowns.", + "location": "Breite Str. 22, 04317 Leipzig, Tyskland", + "lat": "51.336400", + "lon": "12.408160", + "ticket_price": "€5", + "has_cafe": false, + "website": "https://www.clown-museum.de/", + "opening_hours": [ + { + "Mon-Fri": "10:00-18:00" + } + ], + "id": 14, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575371/14-clowns_fqfcua.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Museum of Brands, Packaging & Advertising", + "theme": "Branding and Packaging", + "description": "Journey through the history of branding and advertising at the Museum of Brands in Notting Hill. This innovative museum explores the evolution of consumer culture, from Victorian packaging to modern advertising campaigns. Located in the vibrant neighborhood of Notting Hill, it offers a fascinating glimpse into the power of persuasion.", + "location": "111-117 Lancaster Rd, Notting Hill, London W11 1QT, UK", + "lat": "51.517700", + "lon": "-0.205200", + "ticket_price": "£9", + "has_cafe": true, + "website": "https://www.museumofbrands.com/", + "opening_hours": [ + { + "Mon-Sun": "10:00-18:00" + } + ], + "id": 15, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575372/15-brands_tapscw.jpg", + "category": "Human and social themes" + }, + { + "name": "International Spy Museum", + "theme": "Espionage", + "description": "Enter the shadowy world of espionage at the International Spy Museum in Washington, DC. This interactive museum explores the history and techniques of espionage, from ancient times to the modern era. Located in the heart of the nation's capital, it offers a thrilling glimpse into the world of spies and secret agents.", + "location": "700 L'Enfant Plaza SW, Washington, DC 20024, USA", + "lat": "38.884600", + "lon": "-77.025900", + "ticket_price": "$24", + "has_cafe": true, + "website": "https://www.spymuseum.org/", + "opening_hours": [ + { + "Mon-Sun": "09:00-19:00" + } + ], + "id": 16, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575372/16-spy_jn2svz.jpg", + "category": "Human and social themes" + }, + { + "name": "The Museum of Russian Art", + "theme": "Russian Art", + "description": "Immerse yourself in the rich cultural heritage of Russia at The Museum of Russian Art in Minneapolis. This museum showcases a diverse collection of Russian art, from traditional icons to avant-garde masterpieces. Located in the vibrant city of Minneapolis, it offers a fascinating journey through Russia's artistic legacy.", + "location": "5500 Stevens Ave, Minneapolis, MN 55419, USA", + "lat": "44.905800", + "lon": "-93.281500", + "ticket_price": "$12", + "has_cafe": false, + "website": "https://tmora.org/", + "opening_hours": [ + { + "Mon-Fri": "10:00-17:00" + }, + { + "Sat-Sun": "10:00-16:00" + } + ], + "id": 17, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575373/17-tmora_khdppd.jpg", + "category": "Art movements" + }, + { + "name": "The Museum of Death", + "theme": "Death and Mortality", + "description": "Explore the mysteries of mortality at The Museum of Death in Hollywood. This provocative museum delves into the darker aspects of human existence, offering a chilling glimpse into the history of death and dying. Located in the heart of Hollywood, it's a haunting yet fascinating experience.", + "location": "6031 Hollywood Blvd, Hollywood, CA 90028, USA", + "lat": "34.101300", + "lon": "-118.320200", + "ticket_price": "$15", + "has_cafe": false, + "website": "https://www.museumofdeath.net/", + "opening_hours": [ + { + "Mon-Sun": "10:00-20:00" + } + ], + "id": 18, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575372/18-death_qtedxr.jpg ", + "category": "Human and social themes" + }, + { + "name": "Museum of Bad Art", + "theme": "Bad Art", + "description": "Discover the beauty of bad art at the Museum of Bad Art in Somerville. This offbeat museum celebrates the unintentional creativity found in poorly executed artworks, inviting visitors to appreciate the quirky charm of artistic mishaps. Visit the museum to enjoy some, according to themselves, 'art too bad to be ignored'.", + "location": "55 Davis Square, Somerville, MA 02144, USA", + "lat": "42.396200", + "lon": "-71.122400", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://museumofbadart.org/", + "opening_hours": [ + { + "Mon": "11:30-21:00" + }, + { + "Tue-Thu": "11:30-22:00" + }, + { + "Tue-Thu": "11:30-23:00" + }, + { + "Sun": "11:30-21:00" + } + ], + "id": 19, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575373/19-badart_lmgpb9.jpg", + "category": "Unique Collections" + }, + { + "name": "The Shoe Museum", + "theme": "Footwear", + "description": "Step into a world of footwear fascination at The Shoe Museum in London. This captivating museum showcases a diverse collection of shoes from around the world, highlighting the artistry and innovation of footwear design. Located in the bustling city of London, it's a must-visit for fashion enthusiasts and shoe lovers alike.", + "location": "Churchill Pl, East, Street, London, UK", + "lat": "51.523100", + "lon": "-0.092600", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.batashoemuseum.ca/", + "opening_hours": [ + { + "Mon-Fri": "09:00-17:00" + }, + { + "Sat-Sun": "10:00-18:00" + } + ], + "id": 20, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575421/20-shoe_elb1mp.jpg", + "category": "Miscellaneous" + }, + { + "name": "The Avanos Hair Museum", + "theme": "Human Hair", + "description": "Experience the unusual beauty of human hair at The Avanos Hair Museum in Turkey. This intriguing museum houses a vast collection of hair samples from visitors around the world, creating a unique tapestry of human connections. Located in the charming town of Avanos, it offers a fascinating glimpse into the cultural significance of hair.", + "location": "Gaferli Mahallesi, 50500 Avanos/Nevşehir, Turkey", + "lat": "38.715800", + "lon": "34.846300", + "ticket_price": "Free", + "has_cafe": true, + "website": "https://www.chezgalip.com/_hair-museum_en", + "opening_hours": [ + { + "Mon-Sun": "08:00-19:00" + } + ], + "id": 21, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575421/21-hair_ro5xaw.jpg", + "category": "Human and social themes" + }, + { + "name": "The Cup Noodles Museum", + "theme": "Instant Noodles", + "description": "Indulge your appetite for instant noodles at The Cup Noodles Museum in Yokohama. This playful museum celebrates the history and innovation of cup noodles, inviting visitors to explore interactive exhibits and create their own custom noodle packages. Located in the vibrant city of Yokohama, it's a tasty treat for noodle enthusiasts of all ages.", + "location": "2 Chome-3-4 Shinko, Naka Ward, Yokohama, Kanagawa 231-0001, Japan", + "lat": "35.455000", + "lon": "139.638000", + "ticket_price": "¥500", + "has_cafe": true, + "website": "https://www.cupnoodles-museum.jp/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 22, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575420/22-cupnoodles_mt9ruu.jpg", + "category": "Food and Beverages" + }, + { + "name": "The Salt and Pepper Shaker Museum", + "theme": "Salt and Pepper Shakers", + "description": "Savor the spice of life at The Salt and Pepper Shaker Museum in Gatlinburg. This charming museum showcases a delightful array of salt and pepper shakers from around the world, each with its own unique story to tell. Located in the picturesque town of Gatlinburg, it's a whimsical journey through the history of seasoning.", + "location": "Winchester St, Gatlinburg, TN 37738, USA", + "lat": "35.712300", + "lon": "-83.519600", + "ticket_price": "$3", + "has_cafe": false, + "website": "https://thesaltandpeppershakermuseum.com/", + "opening_hours": [ + { + "Mon-Sun": "10:00-18:00" + } + ], + "id": 23, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575420/22-saltpepper_gzwq0f.jpg", + "category": "Miscellaneous" + }, + { + "name": "Sulabh International Museum of Toilets", + "theme": "Toilets and Sanitation", + "description": "Delve into the fascinating world of toilets and sanitation at the Sulabh International Museum of Toilets in New Delhi. This informative museum explores the evolution of sanitation practices and technologies, highlighting the importance of clean and hygienic facilities. Located in the bustling city of New Delhi, it's a thought-provoking experience for visitors of all ages.", + "location": "Sulabh Bhawan, Palam Dabri Marg, New Delhi, Delhi 110045, India", + "lat": "28.588600", + "lon": "77.071600", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.sulabhtoiletmuseum.org/", + "opening_hours": [ + { + "Mon-Sun": "10:00-17:00" + } + ], + "id": 24, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575422/24-toilet_hkjvbl.jpg", + "category": "Miscellaneous" + }, + { + "name": "The Dog Collar Museum", + "theme": "Dog Collars", + "description": "Unleash your curiosity at The Dog Collar Museum in Leeds Castle. This unique museum showcases a diverse collection of dog collars from different eras and cultures, offering insight into the history of canine companionship. Located in the picturesque grounds of Leeds Castle, it's a tail-wagging adventure for dog lovers of all ages.", + "location": "Leeds Castle, Maidstone, ME17 1PL, UK", + "lat": "51.247500", + "lon": "0.630100", + "ticket_price": "£24.90", + "has_cafe": true, + "website": "https://leeds-castle.com/attraction/dog-collar-museum/", + "opening_hours": [ + { + "Mon-Sun": "10:30-17:00" + } + ], + "id": 25, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575421/25-dogcollar_weeazf.jpg", + "category": "Miscellaneous" + }, + { + "name": "Museum of Icelandic Sorcery and Witchcraft", + "theme": "Witchcraft", + "description": "Enter the mystical world of sorcery and witchcraft at the Museum of Icelandic Sorcery in Hólmavík. This captivating museum delves into the ancient practices and beliefs of Icelandic magic, offering a fascinating glimpse into the supernatural. Located in the enchanting town of Hólmavík, it's a spellbinding experience for curious minds.", + "location": "Höfðagata 8, 510 Hólmavík, Iceland", + "lat": "65.704450", + "lon": "-21.686810", + "ticket_price": "950 ISK", + "has_cafe": true, + "website": "http://www.galdrasyning.is/", + "opening_hours": [ + { + "Mon-Sun": "10:00-18:00" + } + ], + "id": 26, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575447/26-witchcraft_uhsqum.jpg", + "category": "Cultural Symbols" + }, + { + "name": "The Pencil Museum", + "theme": "Pencils", + "description": "Discover the artistry of pencils at The Pencil Museum in Keswick. This charming museum celebrates the humble pencil, showcasing its evolution from humble writing tool to versatile artistic medium. Located in the scenic town of Keswick, it's a graphite-filled journey through the history of drawing and writing.", + "location": "Southey Works, Main St, Keswick CA12 5NG, UK", + "lat": "54.601300", + "lon": "-3.138500", + "ticket_price": "£4.95", + "has_cafe": true, + "website": "https://www.derwentart.com/en-gb/c/about/company/derwent-pencil-museum", + "opening_hours": [ + { + "Mon-Sun": "09:30-17:00" + } + ], + "id": 27, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575444/27-pencils_o25mfd.jpg", + "category": "Miscellaneous" + }, + { + "name": "The Museum of Broken Relationships", + "theme": "Human Relationships", + "description": "Explore the complexities of human relationships at The Museum of Broken Relationships in Zagreb. This poignant museum showcases artifacts and stories from failed relationships around the world, offering a raw and honest portrayal of love and loss. Located in the heart of Zagreb, it's a cathartic experience for visitors seeking emotional resonance.", + "location": "Ćirilometodska ul. 2, 10000, Zagreb, Croatia", + "lat": "45.813000", + "lon": "15.976900", + "ticket_price": "€7", + "has_cafe": true, + "website": "https://brokenships.com/", + "opening_hours": [ + { + "Mon-Sun": "09:00-21:00" + } + ], + "id": 28, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575444/28-relationship_bbfydd.jpg", + "category": "Human and social themes" + }, + { + "name": "The Spy Museum", + "theme": "Espionage", + "description": "Uncover the secrets of espionage at The Spy Museum in Kyiv. This immersive museum takes visitors on a thrilling journey through the world of spies and intelligence agencies, exploring the history and techniques of espionage. Located in the vibrant city of Kyiv, it's a must-visit for anyone intrigued by the shadowy world of covert operations.", + "location": "Lavrska St, 33, Kyiv, Ukraine, 02000", + "lat": "50.434600", + "lon": "30.555000", + "ticket_price": "UAH 200", + "has_cafe": false, + "website": "https://www.spymuseum.org/exhibition-experiences/", + "opening_hours": [ + { + "Mon-Sun": "10:00-19:00" + } + ], + "id": 29, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575446/29-spy_zn3uhl.jpg", + "category": "Human and social themes" + }, + { + "name": "The Museum of Underwater Archaeology", + "theme": "Underwater Archaeology", + "description": "Dive into the depths of history at The Museum of Underwater Archaeology in Bodrum. This captivating museum showcases artifacts recovered from shipwrecks and underwater sites, offering insight into ancient civilizations and maritime heritage. Located within Bodrum Castle, it's a fascinating exploration of the world beneath the waves.", + "location": "Bodrum Castle, Bodrum, Turkey", + "lat": "37.032000", + "lon": "27.429700", + "ticket_price": "20 TRY", + "has_cafe": true, + "website": "https://www.bodrum-museum.com/", + "opening_hours": [ + { + "Mon-Sun": "09:00-19:00" + } + ], + "id": 30, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575446/30-underwater_kjjt6h.jpg", + "category": "Miscellaneous" + }, + { + "name": "Musée de l'Absinthe", + "theme": "Absinthe", + "description": "Indulge in the mystique of absinthe at Musée de l'Absinthe in Pont-de-l'Arche. This unique museum explores the history and culture surrounding the legendary green spirit, from its origins to its infamous reputation. Located on Rue Calle, it's a journey into the world of la fée verte that's sure to intrigue and intoxicate.", + "location": "44 Rue Calle, 27400 Pont-de-l'Arche, France", + "lat": "49.292000", + "lon": "1.146200", + "ticket_price": "€6", + "has_cafe": true, + "website": "https://www.museeabsinthe.com/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 31, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575445/31-absinthe_zgj4oq.jpg", + "category": "Food and Beverages" + }, + { + "name": "Museo del Oro", + "theme": "Gold", + "description": "Immerse yourself in the glittering world of gold at Museo del Oro in Bogotá. This renowned museum showcases a dazzling array of pre-Columbian gold artifacts, offering insight into the rich cultural heritage of Colombia's indigenous peoples. Located in the heart of Bogotá, it's a treasure trove of history and craftsmanship.", + "location": "Cra. 6 #15-88, Bogotá, Colombia", + "lat": "4.601000", + "lon": "-74.071700", + "ticket_price": "4000 COP", + "has_cafe": true, + "website": "https://www.banrepcultural.org/museo-del-oro", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sat": "09:00-18:00" + }, + { + "Sun": "10:00-16:00" + } + ], + "id": 32, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575447/32-gold_bnq1b3.jpg", + "category": "Nature and Science" + }, + { + "name": "The Museum of the American Cocktail", + "theme": "Cocktails", + "description": "Raise a glass to cocktail culture at The Museum of the American Cocktail in New Orleans. This spirited museum celebrates the history and artistry of mixology, with exhibits showcasing the evolution of classic cocktails and the influence of American bartending. Located in the vibrant city of New Orleans, it's a must-visit for cocktail enthusiasts.", + "location": "1504 Oretha Castle Haley Blvd, New Orleans, LA 70113, USA", + "lat": "29.943600", + "lon": "-90.071500", + "ticket_price": "$10", + "has_cafe": true, + "website": "https://www.southernfood.org/motac", + "opening_hours": [ + { + "Mon-Sun": "11:00-17:00" + } + ], + "id": 33, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575447/33-cocktails_frn869.jpg", + "category": "Food and Beverages" + }, + { + "name": "The Nobel Prize Museum", + "theme": "Nobel Prize", + "description": "Celebrate human achievement at The Nobel Prize Museum in Stockholm. This prestigious museum pays tribute to the laureates of the Nobel Prize, exploring their groundbreaking contributions to science, literature, and peace. Located in the historic heart of Stockholm, it's a beacon of inspiration and innovation.", + "location": "Stortorget 2, 103 16 Stockholm, Sweden", + "lat": "59.325900", + "lon": "18.070700", + "ticket_price": "130 SEK", + "has_cafe": true, + "website": "https://nobelprizemuseum.se/en/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "11:00-17:00" + } + ], + "id": 34, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575448/34-nobelprize_tbpkom.jpg", + "category": "Food and Beverages" + }, + { + "name": "Museum of Spirits", + "theme": "Alcohol and Spirits", + "description": "Raise your spirits at the Museum of Spirits in Stockholm. This captivating museum delves into the history and culture of alcohol and spirits, from ancient rituals to modern-day libations. Located on Djurgården Island, it's a spirited journey through the world of distillation and fermentation.", + "location": "Djurgårdsvägen 38-40, 115 21 Stockholm, Sweden", + "lat": "59.327500", + "lon": "18.096300", + "ticket_price": "140 SEK", + "has_cafe": true, + "website": "https://www.spritmuseum.se/en/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-17:00" + } + ], + "id": 35, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575448/35-spritmuseum_rjrdwc.jpg", + "category": "Food and Beverages" + }, + { + "name": "Bode Museum", + "theme": "Sculpture and Byzantine Art", + "description": "Discover the beauty of sculpture and Byzantine art at the Bode Museum in Berlin. This majestic museum is home to a stunning collection of sculptures, Byzantine artifacts, and numismatic treasures. Located on Museum Island, it's a testament to the enduring legacy of artistic craftsmanship.", + "location": "Am Kupfergraben, 10117 Berlin, Germany", + "lat": "52.522600", + "lon": "13.395000", + "ticket_price": "€12", + "has_cafe": true, + "website": "https://www.smb.museum/en/museums-institutions/bode-museum/home.html", + "opening_hours": [ + { + "Mon-Sun": "10:00-18:00" + } + ], + "id": 36, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575468/36-bode_vyv7y4.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "The Kollwitz Museum", + "theme": "Käthe Kollwitz Art", + "description": "Explore the powerful art of Käthe Kollwitz at her eponymous museum in Berlin. This intimate museum showcases the works of the renowned German artist, known for her poignant portrayals of human suffering and social injustice. Located in the Charlottenburg district, it's a moving tribute to one of Germany's most iconic artists.", + "location": "Fasanenstraße 24, 10719 Berlin, Germany", + "lat": "52.501500", + "lon": "13.327900", + "ticket_price": "€8", + "has_cafe": false, + "website": "https://www.kaethe-kollwitz.de/en/", + "opening_hours": [ + { + "Mon-Sun": "11:00-18:00" + } + ], + "id": 37, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575467/37-kollwitz_oeqlzx.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Illuseum", + "theme": "Optical Illusions", + "description": "Challenge your perception of reality at the Museum of Illusions in Berlin. This mind-bending museum features a series of interactive exhibits and optical illusions that will leave you questioning what you see. Located in the heart of Berlin, it's a playful exploration of the science behind visual trickery.", + "location": "Karl-Liebknecht-Strasse 9, 10178 Berlin, Germany", + "lat": "52.521360", + "lon": "13.406490", + "ticket_price": "€16", + "has_cafe": false, + "website": "https://www.illuseum-berlin.de/", + "opening_hours": [ + { + "Mon-Sun": "10:00-20:00" + } + ], + "id": 38, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575467/38-opticalillusion_eiiff7.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "MUTTER Museum", + "theme": "Medical History", + "description": "Journey into the curious world of medical history at the MUTTER Museum in Philadelphia. This unique museum houses a vast collection of anatomical specimens, medical instruments, and pathological artifacts, offering insight into the evolution of medicine. Located in the historic district of Center City, it's a fascinating exploration of the human body.", + "location": "19 S 22nd St, Philadelphia, PA 19103, USA", + "lat": "39.953400", + "lon": "-75.174300", + "ticket_price": "$20", + "has_cafe": false, + "website": "https://muttermuseum.org/", + "opening_hours": [ + { + "Mon-Sun": "10:00-17:00" + } + ], + "id": 39, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575471/39-mutter_qedori.jpg", + "category": "Literature and History" + }, + { + "name": "Shitamachi Tanabata Museum", + "theme": "Tanabata Festival", + "description": "Celebrate the colorful tradition of the Tanabata Festival at the Shitamachi Tanabata Museum in Tokyo. This charming museum showcases elaborate displays of paper decorations and streamers, offering a glimpse into the festive spirit of Japanese culture. Located in the Taito ward, it's a delightful cultural experience for visitors of all ages.", + "location": "1-5-2 Kiyokawa, Taito City, Tokyo 111-0022, Japan", + "lat": "35.724200", + "lon": "139.793900", + "ticket_price": "¥300", + "has_cafe": false, + "website": "https://www.uenostation.com/the-shitamachi-museum-a-taste-of-downtown-culture-in-ueno-park/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "9:30-16:30" + } + ], + "id": 40, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575468/40-tanabata_qcaic2.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Museum of Traditional Korean Music", + "theme": "Korean Music", + "description": "Discover the rich heritage of Korean music at the Museum of Traditional Korean Music in Seoul. This engaging museum showcases a diverse collection of musical instruments, performances, and recordings, highlighting the beauty and complexity of traditional Korean music. Located in the Jung-gu district, it's a harmonious journey through Korea's musical traditions.", + "location": "32-1 Jangchungdan-ro, Jung-gu, Seoul, South Korea", + "lat": "37.561100", + "lon": "126.997800", + "ticket_price": "Free", + "has_cafe": false, + "website": "http://www.ntok.go.kr/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 41, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575470/41-koreanmusic_y58fwt.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Meguro Parasitological Museum", + "theme": "Parasitology", + "description": "Uncover the fascinating world of parasites at the Meguro Parasitological Museum in Tokyo. This unconventional museum houses a vast collection of specimens and exhibits dedicated to the study of parasitology, offering insight into the complex relationship between parasites and their hosts. Located in the Meguro ward, it's a unique destination for curious minds.", + "location": "4-1-1 Shimomeguro, Meguro City, Tokyo 153-0064, Japan", + "lat": "35.633500", + "lon": "139.715600", + "ticket_price": "Free", + "has_cafe": false, + "website": "http://www.kiseichu.org/", + "opening_hours": [ + { + "Mon-Tue": "Closed" + }, + { + "Wed-Sun": "10:00-17:00" + } + ], + "id": 42, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575469/42-meguro_gz5xab.jpg", + "category": "Nature and Science" + }, + { + "name": "Tanzanite Experience Museum", + "theme": "Tanzanite Gemstones", + "description": "Embark on a journey through the world of Tanzanite at the Tanzanite Experience Museum in Arusha. This immersive museum offers a comprehensive look at the history, geology, and cultural significance of Tanzanite, the rare blue gemstone found only in Tanzania. Located in the Blue Plaza, it's a sparkling tribute to Tanzania's natural treasures.", + "location": "Blue Plaza, 3rd Floor, India St, Arusha, Tanzania", + "lat": "-3.368500", + "lon": "36.688100", + "ticket_price": "$10", + "has_cafe": false, + "website": "https://tanzaniteexperience.com/", + "opening_hours": [ + { + "Mon-Sun": "09:00-17:00" + } + ], + "id": 43, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575469/43-tanzanite_bagmxd.jpg", + "category": "Nature and Science" + }, + { + "name": "Museum of West African Art", + "theme": "West African Art", + "description": "Explore the rich legacy of West Africa at the Museum of West African Art (MOWAA). This premier museum showcases a diverse collection of artifacts from ancient Nok settlements to contemporary artists. MOWAA offers an immersive experience into the life, spirituality, and cosmologies of West African communities. Located in Nigera, it's a cultural gem highlighting the region's craftsmanship and heritage.", + "location": "1 Benin Sapele Rd, Oka, Benin City 300102, Edo, Nigeria", + "lat": "6.195910", + "lon": "5.640410", + "ticket_price": "Free", + "has_cafe": true, + "website": "https://wearemowaa.org/", + "opening_hours": [ + { + "Mon-Sun": "09:00-17:00" + } + ], + "id": 44, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575084/44-mowaa_de2kro.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Kutch Museum", + "theme": "Kutch Tribal Culture", + "description": "Immerse yourself in the vibrant tapestry of Kutch tribal culture at the Kutch Museum in Bhuj. This fascinating museum showcases a rich collection of artifacts, textiles, and crafts, offering insight into the traditions and customs of the indigenous communities of Kutch. Located in Ghanshyam Nagar, it's a cultural gem in the heart of Gujarat.", + "location": "Ghanshyam Nagar, Bhuj, Gujarat 370001, India", + "lat": "23.243000", + "lon": "69.664000", + "ticket_price": "5 INR", + "has_cafe": false, + "website": "https://www.gujarattourism.com/kutch-zone/kutch/kutch-museum.html", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-17:00" + } + ], + "id": 45, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575476/45-kutch_e8stle.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Museum of the Island of Mozambique", + "theme": "Local History", + "description": "Discover the captivating history of the Island of Mozambique at this museum nestled in its heart. Through its diverse exhibits, the museum chronicles the rich heritage and cultural evolution of the island, offering visitors a glimpse into its storied past. Immerse yourself in the local history and architectural wonders that make this UNESCO World Heritage Site a must-visit destination.", + "location": "Island of Mozambique, Mozambique", + "lat": "-15.036200", + "lon": "40.735500", + "ticket_price": "100 MZN", + "has_cafe": false, + "website": "https://en.unesco.org/silkroad/silk-road-themes/underwater-heritage/museum-island-mozambique", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "09:00-17:00" + } + ], + "id": 46, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575514/46-mozambique_zvzzh0.jpg", + "category": "Literature and History" + }, + { + "name": "Museum of Islamic Art", + "theme": "Islamic Art", + "description": "Journey through centuries of Islamic art and culture at the Museum of Islamic Art in Cairo. Set against the backdrop of the city's bustling streets, this museum showcases exquisite artifacts, calligraphy, and architectural marvels that reflect the diversity and beauty of Islamic heritage. Explore the intricate designs and spiritual symbolism that define this vibrant artistic tradition.", + "location": "Shar'a Bur Sa'id, Cairo Governorate, Egypt", + "lat": "30.044400", + "lon": "31.242200", + "ticket_price": "100 EGP", + "has_cafe": false, + "website": "http://www.miaegypt.org/", + "opening_hours": [ + { + "Mon-Sun": "09:00-16:00" + } + ], + "id": 47, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575659/47-islamic_qcz7da.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Trick Eye Museum", + "theme": "Optical Illusions", + "description": "Step into a world of wonder and illusion at the Trick Eye Museum. This immersive attraction invites visitors to explore a series of optical illusions and interactive exhibits that will challenge your perception of reality. From mind-bending artworks to gravity-defying installations, it offers a fun and engaging experience for all ages. Whether you're snapping photos with larger-than-life sculptures or testing your wits with cleverly crafted illusions, it's sure to leave you amazed and entertained. It's a must-visit destination for those seeking a unique and memorable adventure.", + "location": "26 Sentosa Gateway #01-43/44, Singapore 098138", + "lat": "1.256500", + "lon": "103.820500", + "ticket_price": "25 SGD", + "has_cafe": false, + "website": "http://trickeye.com/singapore/", + "opening_hours": [ + { + "Mon-Sun": "10:00-21:00" + } + ], + "id": 48, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575548/48-illusion_m9ij1m.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "Seychelles Natural History Museum", + "theme": "Natural History", + "description": "The Natural History Museum hosts exhibitions that not only illustrate flora, fauna and geological history of Seychelles, but serve to enlighten visitors about major environmental concern with Seven prominent aspects of Seychelles ‘ natural heritage are showcased through exhibits and dioramas.", + "location": "Independence Ave, Victoria, Seychelles", + "lat": "-4.619200", + "lon": "55.452400", + "ticket_price": "50 SCR", + "has_cafe": false, + "website": "https://seychellesnationalmuseums.org/about-the-museum-of-natural-history/", + "opening_hours": [ + { + "Mon-Fri": "08:00-16:00" + }, + { + "Sat": "09:00-13:00" + }, + { + "Sun": "Closed" + } + ], + "id": 49, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575576/49-seychelles_jvblly.jpg", + "category": "Nature and Science" + }, + { + "name": "House of Dreams Museum", + "theme": "Mosaic Art", + "description": "Tucked away in East Dulwich, London, the House of Dreams Museum is a mosaic wonderland crafted by artist Stephen Wright. By appointment only, this intimate space invites you to explore vibrant mosaics filled with personal stories and imagination. Discover this hidden gem and unlock the secrets of artistic inspiration.", + "location": "45 Melbourne Grove, East Dulwich, London SE22 8RG, United Kingdom", + "lat": "51.454300", + "lon": "-0.074400", + "ticket_price": "£10", + "has_cafe": false, + "website": "https://www.stephenwrightartist.com/house-of-dreams", + "opening_hours": [ + { + "Mon-Sun": "By appointment only" + } + ], + "id": 50, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575588/50-houseofdreams_dvo1bd.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "Fondation Maeght", + "theme": "Modern and Contemporary Art", + "description": "Located in Saint-Paul-de-Vence, France, the Fondation Maeght is a private foundation that features modern and contemporary art, including works by Miró, Chagall, Giacometti, and others, displayed both indoors and in a sculpture garden.", + "location": "623 Chemin des Gardettes, 06570 Saint-Paul-de-Vence, France", + "lat": "43.6947", + "lon": "7.1202", + "ticket_price": "€15", + "has_cafe": true, + "website": "https://www.fondation-maeght.com", + "opening_hours": [ + { + "Mon-Sun": "10:00-18:00" + } + ], + "id": 51, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575572/51-maeght_jctaxt.jpg", + "category": "Art movements" + }, + { + "name": "Museo degli Strumenti Musicali", + "theme": "Musical Instruments", + "description": "Immerse yourself in the world of music at the Museo degli Strumenti Musicali in Florence. This enchanting museum showcases a remarkable array of musical instruments, tracing the rich heritage of musical craftsmanship through the ages. Situated in the historic Piazza Santa Croce, it's a harmonious blend of art, culture, and melody.", + "location": "Piazza Santa Croce 14, 50122 Florence, Italy", + "lat": "43.768700", + "lon": "11.262600", + "ticket_price": "€8", + "has_cafe": false, + "website": "https://accademiagallery.org/museum-of-musical-instruments/", + "opening_hours": [ + { + "Mon-Sun": "08:15-18:50" + } + ], + "id": 52, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575558/52-instruments_zgo3rl.jpg", + "category": "Literature and History" + }, + { + "name": "Museum of Medieval Torture Instruments", + "theme": "Medieval Torture", + "description": "Step back in time and uncover the dark history of the Middle Ages at the Museum of Medieval Torture Instruments in Prague. This chilling museum presents a collection of gruesome artifacts used for torture and punishment, offering a sobering glimpse into the cruelty of the past. Nestled in the heart of the Old Town, it's a haunting reminder of humanity's capacity for brutality.", + "location": "Celetná 558/12, 110 00 Staré Město, Czech Republic", + "lat": "50.087500", + "lon": "14.422800", + "ticket_price": "160 CZK", + "has_cafe": false, + "website": "https://www.museumtorture.com/", + "opening_hours": [ + { + "Mon-Sun": "10:00-22:00" + } + ], + "id": 53, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575659/53-torture_qec2zo.jpg", + "category": "Human and social themes" + }, + { + "name": "Museo Atlantico", + "theme": "Underwater Sculptures", + "description": "Dive into an underwater world of art and conservation at the Museo Atlantico in Lanzarote. This extraordinary museum features a stunning collection of underwater sculptures, serving as a unique platform for marine conservation and environmental awareness. Located in the crystal-clear waters of the Atlantic Ocean, it's a surreal and thought-provoking experience.", + "location": "Bahía de Las Coloradas, 35580 Playa Blanca, Las Palmas, Spain", + "lat": "28.851100", + "lon": "-13.828500", + "ticket_price": "€12", + "has_cafe": false, + "website": "https://underwatermuseumlanzarote.com/en/", + "opening_hours": [ + { + "Mon-Sun": "09:00-18:00" + } + ], + "id": 54, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575659/54-atlantico_jb5uzm.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "Siriraj Medical Museum", + "theme": "Medical History", + "description": "Explore the fascinating realm of medical history at the Siriraj Medical Museum in Bangkok. This renowned institution houses a diverse collection of anatomical specimens, medical artifacts, and historical exhibits, offering insight into the evolution of healthcare practices. Situated within the prestigious Siriraj Hospital complex, it's a testament to the advancements and challenges of modern medicine.", + "location": "2 Wang Lang Rd, Siriraj, Bangkok Noi, Bangkok 10700, Thailand", + "lat": "13.759400", + "lon": "100.485000", + "ticket_price": "200 THB", + "has_cafe": false, + "website": "https://si.mahidol.ac.th/sirirajmuseum/", + "opening_hours": [ + { + "Mon-Sun": "10:00-17:00" + } + ], + "id": 55, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575660/55-medicalhistory_fb51ok.jpg", + "category": "Literature and History" + }, + { + "name": "Museum of Soviet Arcade Machines", + "theme": "Soviet Arcade Games", + "description": "Relive the nostalgia of Soviet-era gaming at the Museum of Soviet Arcade Machines in Saint Petersburg. This captivating museum features a curated selection of vintage arcade games from the Soviet Union, providing a glimpse into the gaming culture of decades past. Nestled in the historic city center, it's a nostalgic journey through time for gamers and history enthusiasts alike.", + "location": "Koniushennaya Ploshchad', 2B, Saint Petersburg, Russia, 191186", + "lat": "59.939000", + "lon": "30.321300", + "ticket_price": "850 RUB", + "has_cafe": true, + "website": "https://www.15kop.ru/en/", + "opening_hours": [ + { + "Mon-Sun": "11:00-21:00" + } + ], + "id": 56, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575661/56-arcadesoviet_ot4moh.jpg", + "category": "Unique Collections" + }, + { + "name": "Museum of Everyday Life", + "theme": "Everyday objects", + "description": "Celebrate the ordinary at the Museum of Everyday Life in Glover, Vermont. This charming museum pays homage to the mundane objects and rituals of daily existence, inviting visitors to rediscover the beauty in the everyday. Located amidst the serene landscape of rural Vermont, it's a tranquil retreat for reflection and contemplation.", + "location": "3482 Dry Pond Rd, Glover, VT 05839, USA", + "lat": "44.7086", + "lon": "-72.2264", + "ticket_price": "Donations", + "has_cafe": false, + "website": "https://museumofeverydaylife.org", + "opening_hours": [ + { + "Mon-Sun": "08:00-20:00" + } + ], + "id": 57, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575697/57-everyday_rlhail.jpg", + "category": "Miscellaneous" + }, + { + "name": "Museum of Old and New Art (MONA)", + "theme": "Contemporary Art", + "description": "Located in Hobart, Tasmania, Australia, MONA is Australia's largest privately funded museum, featuring a diverse collection of contemporary and modern art, antiquities, and unique installations.", + "location": "655 Main Rd, Berriedale TAS 7011, Australia", + "lat": "-42.8299", + "lon": "147.2820", + "ticket_price": "AUD 30", + "has_cafe": true, + "website": "https://mona.net.au", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-17:00" + } + ], + "id": 58, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575697/58-MONA_m1ellm.jpg", + "category": "Contemporary Themes" + }, + { + "name": "The Barnes Foundation", + "theme": "Impressionist, Post-Impressionist, Early Modern Art", + "description": "Located in Philadelphia, USA, The Barnes Foundation houses one of the world's largest collections of Impressionist, Post-Impressionist, and early Modern paintings, along with African sculpture, Native American ceramics, and more.", + "location": "2025 Benjamin Franklin Pkwy, Philadelphia, PA 19130, USA", + "lat": "39.9607", + "lon": "-75.1720", + "ticket_price": "$25", + "has_cafe": true, + "website": "https://www.barnesfoundation.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "11:00-17:00" + } + ], + "id": 59, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575699/59-barnes_rpf9ib.jpg", + "category": "Art movements" + }, + { + "name": "Museum of Bread", + "theme": "Bread", + "description": "Indulge your senses in the aroma of freshly baked bread at the Museum of Bread in Ulm. This delightful museum celebrates the rich heritage of breadmaking, showcasing a diverse array of breads from around the world. With interactive exhibits and insightful displays, it offers a fascinating journey through the cultural significance of this staple food. Situated in Ulm, it's a must-visit for food lovers and history enthusiasts.", + "location": "Salzstadelgasse 10, 89073 Ulm, Germany", + "lat": "48.4011", + "lon": "9.9965", + "ticket_price": "€7", + "has_cafe": true, + "website": "https://www.brotmuseum.de", + "opening_hours": [ + { + "Tue-Sun": "10:00-17:00" + }, + { + "Mon": "Closed" + } + ], + "id": 60, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575698/60-bread_r7iwxo.jpg", + "category": "Food and Beverages" + }, + { + "name": "The Museum of Witchcraft and Magic", + "theme": "Witchcraft", + "description": "Enter the enchanting world of witchcraft and magic at The Museum of Witchcraft and Magic in Boscastle. This captivating museum delves into the history and folklore of witchcraft, presenting a diverse collection of artifacts and exhibits. From spellbooks to ritual objects, it offers a glimpse into the mystical practices of the past. Nestled in the picturesque harbor of Boscastle, it's a spellbinding experience for all who dare to explore.", + "location": "The Harbour, Boscastle, Cornwall PL35 0HD, UK", + "lat": "50.6843", + "lon": "-4.6934", + "ticket_price": "£7.5", + "has_cafe": false, + "website": "https://www.museumofwitchcraftandmagic.co.uk", + "opening_hours": [ + { + "Mon-Sun": "10:30-18:00" + } + ], + "id": 61, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575699/61-witchcraft_aiczff.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Museum of Shadow", + "theme": "Shadows", + "description": "Discover the beauty of shadows at the Museum of Shadow in St.Petersburg. This unique museum celebrates the artistry and symbolism of shadows, showcasing a captivating collection of shadow-related artifacts and artworks. From shadow puppets to shadow play, it offers an illuminating exploration of this often-overlooked phenomenon. It's a place where light meets darkness in a mesmerizing display.", + "location": "2 Bolshaya Konyushennaya St, 5А, St Petersburg, Russia", + "lat": "59.94051", + "lon": "30.32355", + "ticket_price": "450 RUB", + "has_cafe": true, + "website": "https://en.shadowmuseum.ru/", + "opening_hours": [ + { + "Mon-Sun": "11:00-20:00" + } + ], + "id": 62, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575699/62-shadows_c1b9ie.jpg", + "category": "Nature and Science" + }, + { + "name": "Museum of the Holy Souls in Purgatory", + "theme": "Souls", + "description": "Journey into the spiritual realm at the Museum of the Holy Souls in Purgatory in Rome. This sacred museum houses a collection of artifacts and testimonies related to the belief in purgatory and the souls of the departed. From haunting relics to heartfelt prayers, it offers a contemplative space for reflection and remembrance. Located along Lungotevere Prati, it's a place of solace and spiritual contemplation.", + "location": "Lungotevere Prati, 12, 00193 Roma RM, Italy", + "lat": "41.9062", + "lon": "12.4700", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.italia.it/en/lazio/rome/museum-of-the-holy-souls-in-purgatory", + "opening_hours": [ + { + "Mon-Sun": "07:00-12:00, 16:00-19:00" + } + ], + "id": 63, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575084/63-purgatory_snt2pf.jpg", + "category": "Human and social themes" + }, + { + "name": "The Mummy Museum", + "theme": "Mummies", + "description": "Unravel the mysteries of ancient civilizations at The Mummy Museum in Guanajuato. This fascinating museum showcases a captivating collection of mummies, offering insight into the funerary practices and beliefs of different cultures. From preserved remains to archaeological artifacts, it's a journey through the rich tapestry of human history. Situated in the heart of Guanajuato, it's a must-visit destination for history buffs and curious adventurers.", + "location": "Mina Mexico S/N, Zona Centro, 36000 Guanajuato, Gto., Mexico", + "lat": "21.0154", + "lon": "-101.2561", + "ticket_price": "85MXN", + "has_cafe": false, + "website": "http://www.momiasdeguanajuato.gob.mx/", + "opening_hours": [ + { + "Mon-Sun": "09:00-18:00" + } + ], + "id": 64, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575085/64-mummies_bqxoks.jpg", + "category": "Human and social themes" + }, + { + "name": "Museum of the Weird", + "theme": "Weird artifacts", + "description": "Embark on a journey into the extraordinary at the Museum of the Weird. This eclectic museum is home to a bizarre collection of oddities and curiosities, showcasing everything from cryptozoological specimens to paranormal artifacts. With its offbeat exhibits and captivating displays, it offers a glimpse into the stranger side of life. It's a must-visit destination for those with a taste for the unusual.", + "location": "412 E 6th St, Austin, TX 78701, USA", + "lat": "30.2678", + "lon": "-97.7394", + "ticket_price": "$12", + "has_cafe": false, + "website": "https://www.museumoftheweird.com", + "opening_hours": [ + { + "Mon-Sun": "10:00-19:00" + } + ], + "id": 65, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575084/65-weird_k1fcyz.jpg", + "category": "Unique Collections" + }, + { + "name": "Arnold's Cannibal Museum", + "theme": "Cannibalism", + "description": "Delve into the taboo world of cannibalism at Arnold's Cannibal Museum. This intriguing museum explores the history and cultural significance of cannibalism, featuring a collection of artifacts and exhibits that shed light on this controversial subject. From ancient rituals to modern taboos, it offers a thought-provoking journey into the human psyche. It's a place for those brave enough to confront the darker aspects of human nature.", + "location": "Önneköp 8049, 242 98 Hörby, Sweden", + "lat": "55.791600", + "lon": "13.886580", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.kannibalmuseum.se/", + "opening_hours": [ + { + "Mon-Sun": "By appointment only" + } + ], + "id": 66, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575085/66-cannibalism_s1rkvc.jpg", + "category": "Human and social themes" + }, + { + "name": "Brewery Museum", + "description": "Immerse yourself in the rich history of brewing at the Brewery Museum. This captivating museum celebrates the art and science of brewing, showcasing a diverse array of brewing equipment, historical artifacts, and interactive exhibits. From traditional brewing methods to modern innovations, it offers insight into the evolution of this time-honored craft. It's a destination for beer enthusiasts and history buffs alike.", + "theme": "Brewery", + "location": "Fridnäsvägen 5, 732 30 Arboga, Sweden", + "lat": "59.3947", + "lon": "15.8359", + "ticket_price": "Donations", + "has_cafe": false, + "website": "https://arbogamuseum.se/bryggerimuseet.html", + "opening_hours": [ + { + "Thu": "10:00-13:00" + } + ], + "id": 67, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575085/67-brewery_g2qfao.jpg", + "category": "Food and Beverages" + }, + { + "name": "Borgquist's Hat Museum", + "theme": "Hats", + "description": "Experience the charm of headwear at Borgquist's Hat Museum. This quaint museum is dedicated to the art of hatmaking, featuring a collection of vintage hats, antique millinery tools, and historical displays. From elegant fascinators to practical fedoras, it offers a fascinating glimpse into the world of hats and headgear. It's a hidden gem for fashion enthusiasts and history lovers.", + "location": "Algatan 35, 231 42 Trelleborg, Sweden", + "lat": "55.3773", + "lon": "13.1564", + "ticket_price": "Donations", + "has_cafe": false, + "website": "https://gamlatrelleborg.se/borgquitska/", + "opening_hours": [ + { + "Mon-Sun": "By appointment only" + } + ], + "id": 68, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575085/68-hats_butoho.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "Vagabond Museum", + "theme": "Lifestyle", + "description": "Explore the nomadic lifestyle at the Vagabond Museum. This unique museum celebrates the spirit of adventure and exploration, showcasing artifacts, stories, and memorabilia from travelers around the world. From tales of wanderlust to practical tips for life on the road, it offers a captivating glimpse into the lives of vagabonds past and present. It's a place to ignite your sense of wanderlust and curiosity.", + "location": "Storgatan 4, 361 97 Boda Glasbruk, Sweden", + "lat": "56.730230", + "lon": "15.677240", + "ticket_price": "80 SEK", + "has_cafe": false, + "website": "https://luffarmuseum.se/", + "opening_hours": [ + { + "Mon-Sun": "11:00-16:00" + } + ], + "id": 69, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575128/69-vagabond_fsxhah.jpg", + "category": "Human and social themes" + }, + { + "name": "Vanja's Textile Museum", + "theme": "Textile", + "description": "Dive into the world of textiles at Vanja's Textile Museum. This charming museum is a treasure trove of fabric artistry, featuring a diverse collection of textiles, weaving techniques, and historical garments. From intricate tapestries to delicate lacework, it offers a comprehensive overview of textile traditions from around the world. It's a haven for textile enthusiasts and creative souls.", + "location": "Brunnsvägen 42, 464 50 Dals Rostock, Sweden", + "lat": "58.719400", + "lon": "12.358310", + "ticket_price": "Donations", + "has_cafe": false, + "website": "https://www.textilmuseum.se/", + "opening_hours": [ + { + "Mon-Sun": "By appointment only" + } + ], + "id": 70, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575129/70-textile_icqexn.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "Hanger Museum", + "theme": "Hangers", + "location": "Pukaviksvägen 187, 293 42 Olofström, Sweden", + "description": "Uncover the history of hangers at the Hanger Museum. This quirky museum pays homage to the humble hanger, showcasing a fascinating collection of hangers from different eras and cultures. From vintage wooden hangers to modern plastic designs, it offers a unique perspective on an everyday object. It's a lighthearted destination for those with a curiosity for the overlooked and unexpected.", + "lat": "56.268520", + "lon": "14.523320", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.visitblekinge.se/kamera-och-galgmuseum", + "opening_hours": [ + { + "Mon-Sun": "12:00-16:00" + } + ], + "id": 71, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575129/71-hanger_zypixt.jpg", + "category": "Artistic Techniques and Forms" + }, + { + "name": "Inhotim", + "theme": "Contemporary Art", + "description": "Immerse yourself in a world of art and nature at Inhotim. This expansive museum and botanical garden is a sanctuary for contemporary art, featuring a diverse collection of sculptures, paintings, and installations set amidst lush tropical gardens. From immersive experiences to thought-provoking exhibitions, it offers a sensory journey unlike any other. It's a haven for art lovers and nature enthusiasts alike.", + "location": "Brumadinho, Minas Gerais, Brazil", + "lat": "-20.132556", + "lon": "-44.197224", + "ticket_price": "50 BRL", + "has_cafe": true, + "website": "https://www.inhotim.org.br/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Fri": "9:30-16:30" + }, + { + "Sat-Sun": "9:30-17:30" + } + ], + "id": 72, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575129/72-inhotim_cb4cvs.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo Soumaya", + "theme": "Latin American Art", + "description": "Located in Mexico City, Museo Soumaya is known for its striking modern architecture and extensive collection of over 66,000 pieces, including works by Rodin, Dalí, and Mexican artists.", + "location": "Blvd. Miguel de Cervantes Saavedra, Granada, Miguel Hidalgo, 11529 Mexico City, CDMX, Mexico", + "lat": "19.4404", + "lon": "-99.2043", + "ticket_price": "Free", + "has_cafe": false, + "website": "http://www.museosoumaya.org/", + "opening_hours": [ + { + "Mon-Sun": "10:30-18:30" + } + ], + "id": 73, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575129/73-soumaya_i2twvy.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Ralli Museum", + "theme": "Latin American Art", + "description": "The Ralli Museum in Santiago, Chile, features contemporary Latin American art with an impressive collection of paintings and sculptures.", + "location": "Vitacura, Santiago, Chile", + "lat": "-33.3911", + "lon": "-70.5779", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.rallimuseums.com", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Fri": "10:30-17:00" + }, + { + "Sat-Sun": "10:30-18:00" + } + ], + "id": 74, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575163/74-ralli_rrzep1.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo de Arte de Ponce", + "theme": "European Art", + "description": "Located in Ponce, Puerto Rico, this museum features a collection of European art, including works from the Renaissance to the 19th century, with an emphasis on Pre-Raphaelite paintings.", + "location": "2325 Ave. Las Américas, Ponce, 00717, Puerto Rico", + "lat": "18.0115", + "lon": "-66.6141", + "ticket_price": "$6", + "has_cafe": true, + "website": "https://museoarteponce.org", + "opening_hours": [ + { + "Mon-Tue": "Closed" + }, + { + "Wed-Sun": "10:00-17:00" + } + ], + "id": 75, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575164/75-ponce_e4hiqt.jpg", + "category": "Art movements" + }, + { + "name": "Chichu Art Museum", + "theme": "Contemporary Art", + "description": "Located on Naoshima Island, Japan, the Chichu Art Museum is an underground museum designed by Tadao Ando. It features works by Claude Monet, James Turrell, and Walter De Maria.", + "location": "Naoshima, Kagawa, Japan", + "lat": "34.4562", + "lon": "133.9954", + "ticket_price": "¥2,100", + "has_cafe": true, + "website": "https://benesse-artsite.jp/en/art/chichu.html", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 76, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575182/76-chichu_edlwuc.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo Nacional de Arte Romano", + "theme": "Roman Art", + "description": "Located in Mérida, Spain, this museum showcases a vast collection of Roman artifacts, including mosaics, sculptures, and everyday items from the Roman city of Emerita Augusta.", + "location": "Calle José Ramón Mélida, s/n, 06800 Mérida, Badajoz, Spain", + "lat": "38.9151", + "lon": "-6.3432", + "ticket_price": "€3", + "has_cafe": false, + "website": "https://museoarteromano.mcu.es", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sat": "9:30-18:30" + }, + { + "Sun": "10:00-15:00" + } + ], + "id": 77, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575182/77-roman_mivjym.jpg", + "category": "Art movements" + }, + { + "name": "Museo Universitario Arte Contemporáneo (MUAC)", + "theme": "Contemporary Art", + "description": "Located in Mexico City, Mexico, MUAC is part of the National Autonomous University of Mexico (UNAM) and is dedicated to contemporary art, featuring works by Mexican and international artists.", + "location": "Insurgentes Sur 3000, C.U., Coyoacán, 04510 Ciudad de México, CDMX, Mexico", + "lat": "19.3206", + "lon": "-99.1893", + "ticket_price": "MXN 40", + "has_cafe": true, + "website": "https://muac.unam.mx/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 78, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575183/78-muac_ppmglo.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Zeitz Museum of Contemporary Art Africa (MOCAA)", + "theme": "African Contemporary Art", + "description": "Located in Cape Town, South Africa, Zeitz MOCAA is the largest museum of contemporary African art in the world, housed in a converted grain silo.", + "location": "Silo District, V&A Waterfront, Cape Town, 8001, South Africa", + "lat": "-33.9078", + "lon": "18.4206", + "ticket_price": "R200", + "has_cafe": true, + "website": "https://www.zeitzmocaa.museum", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 79, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575183/79-zeitz_rq4scg.jpg", + "category": "Contemporary Themes" + }, + { + "name": "The Menil Collection", + "theme": "Diverse Art Collections", + "description": "Located in Houston, Texas, USA, the Menil Collection is known for its wide range of art, including Surrealism, Modern, and Tribal art, housed in a serene, Renzo Piano-designed building.", + "location": "1533 Sul Ross St, Houston, TX 77006, USA", + "lat": "29.7375", + "lon": "-95.3972", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.menil.org/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "11:00-19:00" + } + ], + "id": 80, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575183/80-menil_s2gxht.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museum of Contemporary Art (MOCA)", + "theme": "Contemporary Art", + "description": "The Museum of Contemporary Art in Bangkok, Thailand, features a collection of contemporary Thai art, including paintings, sculptures, and mixed media works.", + "location": "499 Vibhavadi Rangsit Rd, Chatuchak, Bangkok 10900, Thailand", + "lat": "13.8466", + "lon": "100.5654", + "ticket_price": "฿250", + "has_cafe": true, + "website": "https://www.mocabangkok.com", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 81, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575183/81-moca_gmnzwj.jpg", + "category": "Contemporary Themes" + }, + { + "name": "The David Collection", + "theme": "Islamic Art", + "description": "Located in Copenhagen, Denmark, the David Collection is known for its extensive Islamic art collection, along with European 18th-century art and Danish Golden Age paintings.", + "location": "Kronprinsessegade 30-32, 1306 København, Denmark", + "lat": "55.6849", + "lon": "12.5817", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.davidmus.dk", + "opening_hours": [ + { + "Mon-Tue": "Closed" + }, + { + "Wed-Sun": "10:00-17:00" + } + ], + "id": 82, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575213/82-islamic_wc9vus.jpg", + "category": "Cultural Symbols" + }, + { + "name": "Fundación Proa", + "theme": "Contemporary Art", + "description": "Fundación Proa in Buenos Aires, Argentina, is a contemporary art museum located in the historic La Boca neighborhood, featuring temporary exhibitions of international and local artists.", + "location": "Av. Pedro de Mendoza 1929, C1169AAD, Buenos Aires, Argentina", + "lat": "-34.6348", + "lon": "-58.3627", + "ticket_price": "ARS 300", + "has_cafe": true, + "website": "https://proa.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "12:00-19:00" + } + ], + "id": 83, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575213/83-proa_soxyen.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Glenstone", + "theme": "Contemporary Art", + "description": "Glenstone, located in Potomac, Maryland, USA, combines art, architecture, and landscape to create a serene environment for viewing contemporary art.", + "location": "12100 Glen Rd, Potomac, MD 20854, USA", + "lat": "39.0539", + "lon": "-77.2456", + "ticket_price": "Free", + "has_cafe": true, + "website": "https://www.glenstone.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Thu-Sun": "10:00-17:00" + } + ], + "id": 84, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575214/85-glenstone_utxs9s.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Sammlung Boros", + "theme": "Contemporary Art", + "description": "Sammlung Boros is a contemporary art collection housed in a former WWII bunker in Berlin, Germany. The museum showcases rotating exhibitions of the Boros Collection.", + "location": "Reinhardtstraße 20, 10117 Berlin, Germany", + "lat": "52.5244", + "lon": "13.3839", + "ticket_price": "€15", + "has_cafe": false, + "website": "https://www.sammlung-boros.de", + "opening_hours": [ + { + "Mon-Wed": "Closed" + }, + { + "Thu-Sun": "10:00-18:00" + } + ], + "id": 85, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575214/85-sammlung_irvtir.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Kumu Art Museum", + "theme": "Estonian Art", + "description": "Located in Tallinn, Estonia, the Kumu Art Museum is part of the Art Museum of Estonia, showcasing Estonian art from the 18th century to contemporary works.", + "location": "Weizenbergi 34 / Valge 1, 10127 Tallinn, Estonia", + "lat": "59.4370", + "lon": "24.7947", + "ticket_price": "€8", + "has_cafe": true, + "website": "https://kunstimuuseum.ekm.ee/en/kumu-art-museum", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Wed": "10:00-18:00" + }, + { + "Thu": "10:00-20:00" + }, + { + "Fri-Sun": "10:00-18:00" + } + ], + "id": 86, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575215/86-kumu_f1gawi.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo de Arte Contemporáneo de Monterrey (MARCO)", + "theme": "Contemporary Art", + "description": "MARCO, located in Monterrey, Mexico, is one of the leading contemporary art museums in Latin America, featuring works by Mexican and international artists.", + "location": "Juan Zuazua y, Padre Raymundo Jardón S/N, Centro, 64000 Monterrey, N.L., Mexico", + "lat": "25.6657", + "lon": "-100.3106", + "ticket_price": "MXN 90", + "has_cafe": true, + "website": "https://www.marco.org.mx", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 87, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575216/87-marco_cimo2i.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo Tamayo", + "theme": "Modern Art", + "description": "Located in Mexico City, Mexico, Museo Tamayo showcases contemporary and modern art, including works by Rufino Tamayo and other international artists.", + "location": "Paseo de la Reforma 51, Bosque de Chapultepec I Secc, 11580 Ciudad de México, CDMX, Mexico", + "lat": "19.4256", + "lon": "-99.1911", + "ticket_price": "MXN 70", + "has_cafe": true, + "website": "https://museotamayo.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-18:00" + } + ], + "id": 88, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575217/88-tamayo_klvpuv.jpg", + "category": "Art movements" + }, + { + "name": "National Museum of Modern and Contemporary Art (MMCA)", + "theme": "Contemporary Art", + "description": "Located in Seoul, South Korea, MMCA features a wide range of contemporary Korean and international art across multiple branches, with the main museum in Gwacheon.", + "location": "30 Samcheong-ro, Sogyeok-dong, Jongno-gu, Seoul, South Korea", + "lat": "37.5796", + "lon": "126.9814", + "ticket_price": "₩4.000", + "has_cafe": true, + "website": "https://www.mmca.go.kr/eng/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Thu": "10:00-18:00" + }, + { + "Fri-Sat": "10:00-21:00" + }, + { + "Sun": "10:00-18:00" + } + ], + "id": 89, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575216/89-mmca_degwuk.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Pérez Art Museum Miami (PAMM)", + "theme": "Contemporary Art", + "description": "Located in Miami, Florida, USA, PAMM focuses on 20th and 21st-century art from the Americas, reflecting Miami's diverse community and cultural context.", + "location": "1103 Biscayne Blvd, Miami, FL 33132, USA", + "lat": "25.7858", + "lon": "-80.1874", + "ticket_price": "$16", + "has_cafe": true, + "website": "https://www.pamm.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Wed": "11:00-18:00" + }, + { + "Thu": "11:00-21:00" + }, + { + "Fri-Sun": "11:00-18:00" + } + ], + "id": 90, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575217/90-pamm_f4jdxn.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Macao Museum of Art (MAM)", + "theme": "Chinese Art", + "description": "Located in Macao, China, the Macao Museum of Art features Chinese art, including calligraphy, paintings, ceramics, and contemporary works.", + "location": "Avenida Xian Xing Hai, NAPE, Macao, China", + "lat": "22.1896", + "lon": "113.5538", + "ticket_price": "5 MOP", + "has_cafe": false, + "website": "https://www.mam.gov.mo", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-19:00" + } + ], + "id": 91, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575219/91-macao_udimdk.jpg", + "category": "Art movements" + }, + { + "name": "Museo de Arte Latinoamericano de Buenos Aires (MALBA)", + "theme": "Latin American Art", + "description": "Located in Buenos Aires, Argentina, MALBA is dedicated to Latin American art from the early 20th century to the present, featuring works by Frida Kahlo, Diego Rivera, and other prominent artists.", + "location": "Av. Pres. Figueroa Alcorta 3415, Buenos Aires, Argentina", + "lat": "-34.5836", + "lon": "-58.4036", + "ticket_price": "ARS 250", + "has_cafe": true, + "website": "https://www.malba.org.ar", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Wed-Mon": "12:00-20:00" + } + ], + "id": 92, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575218/92-malba_sq6kbn.jpg", + "category": "Contemporary Themes" + }, + { + "name": "The Phillips Collection", + "theme": "Modern Art", + "description": "Located in Washington, D.C., USA, The Phillips Collection is America's first museum of modern art, housing an impressive collection of works by artists such as Renoir, Rothko, and van Gogh.", + "location": "1600 21st St NW, Washington, D.C., USA", + "lat": "38.9117", + "lon": "-77.0466", + "ticket_price": "$12", + "has_cafe": true, + "website": "https://www.phillipscollection.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sat": "10:00-17:00" + }, + { + "Sun": "12:00-18:30" + } + ], + "id": 93, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575218/93-philips_krhime.jpg", + "category": "Art movements" + }, + { + "name": "Museu Coleção Berardo", + "theme": "Modern and Contemporary Art", + "description": "Located in Lisbon, Portugal, Museu Coleção Berardo features a vast collection of modern and contemporary art, including works by Picasso, Duchamp, and Warhol.", + "location": "Praça do Império, 1449-003 Lisboa, Portugal", + "lat": "38.6979", + "lon": "-9.2077", + "ticket_price": "€5", + "has_cafe": true, + "website": "https://www.berardocollection.com/?sid=1&lang=en", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "10:00-19:00" + } + ], + "id": 94, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575268/94-berardo_dtpimj.jpg", + "category": "Art movements" + }, + { + "name": "Tate St Ives", + "theme": "Modern and Contemporary Art", + "description": "Located in St Ives, England, Tate St Ives showcases modern and contemporary art, with a special focus on the artists associated with the St Ives School.", + "location": "Porthmeor Beach, St Ives, Cornwall, TR26 1TG, England", + "lat": "50.2156", + "lon": "-5.4819", + "ticket_price": "£10.50", + "has_cafe": true, + "website": "https://www.tate.org.uk/visit/tate-st-ives", + "opening_hours": [ + { + "Mon-Sun": "10:00-17:20" + } + ], + "id": 95, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575285/95-tate_b7ndnr.jpg", + "category": "Art movements" + }, + { + "name": "Hara Museum of Contemporary Art", + "theme": "Contemporary Art", + "description": "Located in Tokyo, Japan, the Hara Museum of Contemporary Art features contemporary art exhibitions in a unique setting, a former residence designed by Jin Watanabe.", + "location": "4-7-25 Kita-Shinagawa, Shinagawa-ku, Tokyo 140-0001, Japan", + "lat": "35.6218", + "lon": "139.7389", + "ticket_price": "¥1100", + "has_cafe": true, + "website": "https://www.haramuseum.or.jp", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "11:00-17:00" + } + ], + "id": 96, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575304/96-hara_ygk6sf.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Villa Stuck", + "theme": "Art Nouveau", + "description": "Located in Munich, Germany, Villa Stuck is the former residence of artist Franz von Stuck, showcasing his works and featuring temporary exhibitions of contemporary art.", + "location": "Prinzregentenstraße 60, 81675 München, Germany", + "lat": "48.1417", + "lon": "11.5984", + "ticket_price": "€9", + "has_cafe": true, + "website": "https://www.villastuck.de", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "11:00-18:00" + } + ], + "id": 97, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575318/97-villastuck_kwgxhs.jpg", + "category": "Art movements" + }, + { + "name": "Museum of Contemporary Art San Diego (MCASD)", + "theme": "Contemporary Art", + "description": "MCASD, located in San Diego, USA, offers contemporary art exhibitions across its two locations in La Jolla and Downtown San Diego.", + "location": "700 Prospect St, La Jolla, CA 92037, USA", + "lat": "32.8440", + "lon": "-117.2781", + "ticket_price": "$10", + "has_cafe": true, + "website": "https://www.mcasd.org", + "opening_hours": [ + { + "Mon-Tue": "Closed" + }, + { + "Wed-Sun": "11:00-17:00" + } + ], + "id": 98, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717577269/98-mascd_ov2xgb.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Astrup Fearnley Museum of Modern Art", + "theme": "Modern and Contemporary Art", + "description": "Located in Oslo, Norway, the Astrup Fearnley Museum of Modern Art features contemporary international and Norwegian art, housed in a stunning building designed by Renzo Piano.", + "location": "Strandpromenaden 2, 0252 Oslo, Norway", + "lat": "59.9074", + "lon": "10.7213", + "ticket_price": "NOK 130", + "has_cafe": true, + "website": "https://www.afmuseet.no", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tue-Sun": "11:00-17:00" + } + ], + "id": 99, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575334/99-astrup_lihxzw.jpg", + "category": "Art movements" + }, + { + "name": "Centro de Arte Contemporáneo (CAC)", + "theme": "Contemporary Art", + "description": "Located in Málaga, Spain, the Centro de Arte Contemporáneo showcases contemporary art from the 1950s to the present, with a focus on current artistic trends.", + "location": "Calle Alemania, S/N, 29001 Málaga, Spain", + "lat": "36.7196", + "lon": "-4.4261", + "ticket_price": "Free", + "has_cafe": true, + "website": "https://cacmalaga.eu/", + "opening_hours": [ + { + "Mon-Sun": "10:00-20:00" + } + ], + "id": 100, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575334/100-cac_mbaf0n.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Garage Museum of Contemporary Art", + "theme": "Contemporary Art", + "description": "Located in Moscow, Russia, the Garage Museum of Contemporary Art is a major institution dedicated to the development of contemporary art and culture in Russia and worldwide.", + "location": "9/32 Krymsky Val St, Moscow, Russia, 119049", + "lat": "55.7284", + "lon": "37.6019", + "ticket_price": "RUB 500", + "has_cafe": true, + "website": "https://garagemca.org/", + "opening_hours": [ + { + "Mon-Sun": "11:00-22:00" + } + ], + "id": 101, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575334/101-garage_gj24ki.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Hirshhorn Museum and Sculpture Garden", + "theme": "Modern and Contemporary Art", + "description": "Located in Washington, D.C., USA, the Hirshhorn Museum and Sculpture Garden is part of the Smithsonian Institution and features an extensive collection of modern and contemporary art, including large-scale sculptures displayed in its garden.", + "location": "Independence Ave SW & 7th St SW, Washington, D.C., USA", + "lat": "38.8880", + "lon": "-77.0230", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://hirshhorn.si.edu", + "opening_hours": [ + { + "Mon-Sun": "10:00-17:30" + } + ], + "id": 102, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575334/102-hirshhorn_wl7sha.jpg", + "category": "Art movements" + }, + { + "name": "Dia:Beacon", + "theme": "Contemporary Art", + "description": "Dia:Beacon, located in Beacon, New York, USA, is housed in a former Nabisco box printing factory and features large-scale installations and works from the 1960s to the present.", + "location": "3 Beekman St, Beacon, NY 12508, USA", + "lat": "41.5064", + "lon": "-73.9823", + "ticket_price": "$20", + "has_cafe": true, + "website": "https://www.diaart.org/visit/visit/diabeacon-beacon-united-states", + "opening_hours": [ + { + "Mon-Tue": "Closed" + }, + { + "Wed-Mon": "10:00-17:00" + } + ], + "id": 103, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575336/103-diabeacon_m1upit.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museum of Contemporary Art (MCA)", + "theme": "Contemporary Art", + "description": "Located in The Rocks, Australia, the Museum of Contemporary Art Australia is dedicated to exhibiting, interpreting, and collecting contemporary art from Australia and around the world.", + "location": "140 George St, The Rocks NSW 2000, Australia", + "lat": "-33.8599", + "lon": "151.2094", + "ticket_price": "Free", + "has_cafe": true, + "website": "https://www.mca.com.au/", + "opening_hours": [ + { + "Mon-Tue": "10:00-17:00" + }, + { + "Wed": "10:00-21:00" + }, + { + "Thu-Sun": "10:00-17:00" + } + ], + "id": 104, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575352/104-mca_tipnll.jpg", + "category": "Contemporary Themes" + }, + { + "name": "WIELS Contemporary Art Centre", + "theme": "Contemporary Art", + "description": "WIELS is a leading institution for contemporary art located in Brussels, Belgium, offering exhibitions, residencies, and educational programs focused on contemporary art practices.", + "location": "Avenue Van Volxem 354, 1190 Forest, Brussels, Belgium", + "lat": "50.8210", + "lon": "4.3339", + "ticket_price": "€10", + "has_cafe": true, + "website": "https://www.wiels.org", + "opening_hours": [ + { + "Mon-Tue": "Closed" + }, + { + "Wed-Sun": "11:00-18:00" + } + ], + "id": 105, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717575351/105-wiels_lnz4nn.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo Leonora Carrington", + "theme": "Contemporary Art", + "description": "An opportunity to appreciate the surreal work from the surrealist artist of English origin, but with Mexican heart. Her sculptures, jewellery, graphic works and personal objects are exhibited as well.", + "location": "Calz de Guadalupe 705, San Juan de Guadalupe, Julian Carrillo, 78340 San Luis Potosí, S.L.P., Mexico", + "lat": "22.13837", + "lon": "100.9706", + "ticket_price": "60 MXN", + "has_cafe": false, + "website": "https://www.leonoracarringtonmuseo.org/", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tues-Sun": "11:00-18:00" + } + ], + "id": 106, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717586863/106-surrealism_p6houd.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Museo Nacional de Culturas Populares", + "theme": "Impressionism", + "description": "It holds temporary exhibitions, organises events in accordance with the traditional festive calendar and develops educational and artistic activities in accordance with the theme of the exhibitions.", + "location": "Av Miguel Hidalgo 289, Del Carmen, Coyoacán, 04100 Ciudad de México, CDMX, Mexico", + "lat": "19.2100", + "lon": "99.0940", + "ticket_price": "20 MXN", + "has_cafe": true, + "website": "https://sic.cultura.gob.mx/ficha.php?table=museo&table_id=976", + "opening_hours": [ + { + "Tue-Sun": "11:00-18:00" + } + ], + "id": 107, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717687065/107-populares_r4gclw.jpg", + "category": "Art movements" + }, + { + "name": "59 Rivoli", + "theme": "Contemporary Art", + "description": "An artist collective and exhibition space in the heart of Paris. The building, originally an artist squat, now hosts over 30 artists and offers rotating exhibitions, open studios, and various cultural events.", + "location": "59 Rue de Rivoli, 75001 Paris, France", + "lat": "48.8600", + "lon": "2.3440", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.59rivoli.org", + "opening_hours": [ + { + "Mon": "Closed" + }, + { + "Tues-Sun": "13:00-20:00" + } + ], + "id": 108, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717687788/108-rivoli_thh6ji.jpg", + "category": "Contemporary Themes" + }, + { + "name": "Atelier Brancusi", + "theme": "Modern Art", + "description": "A reconstruction of the studio of the Romanian sculptor Constantin Brancusi, showcasing his sculptures, pedestals, furniture, and tools, offering insight into his artistic process and life.", + "location": "Place Georges Pompidou, 75004 Paris, France", + "lat": "48.8606", + "lon": "2.3522", + "ticket_price": "Free", + "has_cafe": false, + "website": "https://www.centrepompidou.fr/fr/collection/latelier-brancusi", + "opening_hours": [ + { + "Tue-Sun": "14:00-18:00" + } + ], + "id": 109, + "url": "https://res.cloudinary.com/dcowhgigh/image/upload/v1717687789/109-brancusi_bg4kk7.jpg", + "category": "Art movements" + } +] diff --git a/backend/middlewares/authenticateUser.js b/backend/middlewares/authenticateUser.js new file mode 100644 index 000000000..3ea6cdd7b --- /dev/null +++ b/backend/middlewares/authenticateUser.js @@ -0,0 +1,18 @@ +import { User } from "../models/User.js" + +//Authenticate user middleware +export const authenticateUser = async (req, res, next) => { + const token = req.header("Authorization") + const user = await User.findOne({ accessToken: token }) + + if (!token) { + return res.status(401).json({ message: "Access token is missing" }) + } + + if (!user) { + res.status(403).json({ message: "Invalid access token" }) + } + + req.user = user + next() +} diff --git a/backend/models/Museum.js b/backend/models/Museum.js new file mode 100644 index 000000000..58f022f6c --- /dev/null +++ b/backend/models/Museum.js @@ -0,0 +1,23 @@ +import mongoose from "mongoose" + +const { Schema } = mongoose + +// Define schema +const museumSchema = new Schema({ + name: { type: String, required: true }, + theme: { type: String }, + description: { type: String }, + location: { type: String }, + lat: { type: String }, + lon: { type: String }, + ticket_price: { type: String }, + has_cafe: { type: Boolean }, + website: { type: String }, + opening_hours: [{ type: Schema.Types.Mixed }], + id: { type: Number }, + url: { type: String }, + category: { type: String }, +}) + +// Create model with mongoose +export const Museum = mongoose.model("Museum", museumSchema) diff --git a/backend/models/Review.js b/backend/models/Review.js new file mode 100644 index 000000000..489069054 --- /dev/null +++ b/backend/models/Review.js @@ -0,0 +1,20 @@ +import mongoose from "mongoose"; +const { Schema } = mongoose; + +//To add "created by" which should display the name of the user + +// Define schema +const reviewSchema = new Schema({ + museumId: { + type: Number, + required: true, + }, + message: { type: String, required: true, minlength: 10, maxlength: 250 }, + createdAt: { type: Date, default: Date.now }, + userId: { type: String, required: true }, + userName: { type: String, required: true }, + rating: { type: Number, required: true, default: 4 }, +}); + +// Create model with mongoose +export const Review = mongoose.model("Review", reviewSchema); diff --git a/backend/models/SavedFavorites.js b/backend/models/SavedFavorites.js new file mode 100644 index 000000000..f29927b14 --- /dev/null +++ b/backend/models/SavedFavorites.js @@ -0,0 +1,18 @@ +import mongoose from "mongoose"; +const { Schema } = mongoose; + +const savedFavoritesSchema = new Schema({ + museumId: { + type: Number, + required: true, + }, + userId: { + type: String, + required: true, + }, +}); + +export const SavedFavorites = mongoose.model( + "SavedFavorites", + savedFavoritesSchema +); diff --git a/backend/models/User.js b/backend/models/User.js new file mode 100644 index 000000000..5c8eb16cc --- /dev/null +++ b/backend/models/User.js @@ -0,0 +1,30 @@ +import mongoose from "mongoose"; +import bcrypt from "bcrypt"; +const { Schema } = mongoose; + +// Define schema +const userSchema = new Schema({ + name: { + type: String, + unique: true, + }, + email: { + type: String, + unique: true, + }, + password: { + type: String, + required: true, + }, + id: { + type: String, + required: true, + }, + accessToken: { + type: String, + default: () => bcrypt.genSaltSync(), + }, +}); + +// Create model with mongoose +export const User = mongoose.model("User", userSchema); diff --git a/backend/package.json b/backend/package.json index 08f29f244..be5ea9e77 100644 --- a/backend/package.json +++ b/backend/package.json @@ -12,9 +12,12 @@ "@babel/core": "^7.17.9", "@babel/node": "^7.16.8", "@babel/preset-env": "^7.16.11", + "bcrypt": "^5.1.1", "cors": "^2.8.5", + "dotenv": "^16.4.5", "express": "^4.17.3", + "express-list-endpoints": "^7.1.0", "mongoose": "^8.4.0", "nodemon": "^3.0.1" } -} \ No newline at end of file +} diff --git a/backend/routes/authRoutes.js b/backend/routes/authRoutes.js new file mode 100644 index 000000000..bd499ed56 --- /dev/null +++ b/backend/routes/authRoutes.js @@ -0,0 +1,15 @@ +import express from "express" +import { + registerUser, + loginUser, + getUserPage, +} from "../controllers/authController.js" +import { authenticateUser } from "../middlewares/authenticateUser.js" + +const router = express.Router() + +router.post("/users", registerUser) +router.post("/sessions", loginUser) +router.get("/user-page", authenticateUser, getUserPage) + +export default router \ No newline at end of file diff --git a/backend/routes/favoriteRoutes.js b/backend/routes/favoriteRoutes.js new file mode 100644 index 000000000..d368bcf0f --- /dev/null +++ b/backend/routes/favoriteRoutes.js @@ -0,0 +1,14 @@ +import express from "express"; +import { + isMuseumLiked, + toggleFavorite, + likedMuseums, +} from "../controllers/favoriteController.js"; + +const router = express.Router(); + +router.post("/favorites/toggle", toggleFavorite); +router.post("/favorites/:museumId", isMuseumLiked); +router.post("/favorites", likedMuseums); + +export default router; diff --git a/backend/routes/museumRoutes.js b/backend/routes/museumRoutes.js new file mode 100644 index 000000000..8c518b9e8 --- /dev/null +++ b/backend/routes/museumRoutes.js @@ -0,0 +1,8 @@ +import express from "express" +import { getMuseums } from "../controllers/museumController.js" + +const router = express.Router() + +router.get("/museums", getMuseums) + +export default router diff --git a/backend/routes/reviewRoutes.js b/backend/routes/reviewRoutes.js new file mode 100644 index 000000000..ebd98736d --- /dev/null +++ b/backend/routes/reviewRoutes.js @@ -0,0 +1,16 @@ +import express from "express"; +import { + getReviews, + postReviews, + deleteReviews, + getReviewsForUser, +} from "../controllers/reviewController.js"; + +const router = express.Router(); + +router.get("/reviews", getReviews); +router.post("/reviews", postReviews); +router.delete("/reviews/:id", deleteReviews); +router.post("/reviews/user", getReviewsForUser); + +export default router; diff --git a/backend/server.js b/backend/server.js index 2c00e4802..02b8b80c9 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,31 +1,51 @@ -import express from "express"; -import cors from "cors"; -import mongoose from 'mongoose' - -const mongoUrl = process.env.MONGO_URL || "mongodb://localhost/flowershop" +import express from "express" +import cors from "cors" +import mongoose from "mongoose" +import expressListEndpoints from "express-list-endpoints" +import authRoutes from "./routes/authRoutes.js" +import reviewRoutes from "./routes/reviewRoutes.js" +import favoriteRoutes from "./routes/favoriteRoutes.js" +import museumRoutes from "./routes/museumRoutes.js" +import museumData from "./data/museums.json" +import { Museum } from "./models/Museum.js" + +const mongoUrl = process.env.MONGO_URL || "mongodb://localhost/museums" mongoose.connect(mongoUrl) mongoose.Promise = Promise - +//Seed database +if (process.env.RESET_DB) { + const seedDatabase = async () => { + await Museum.deleteMany() + //insert each document in the array into the collection + await Museum.insertMany(museumData) + } + seedDatabase() +} // Defines the port the app will run on. Defaults to 8080, but can be overridden // when starting the server. Example command to overwrite PORT env variable value: // PORT=9000 npm start -const port = process.env.PORT || 8080; -const app = express(); +const port = process.env.PORT || 3000 +const app = express() // Add middlewares to enable cors and json body parsing -app.use(cors()); -app.use(express.json()); +app.use(cors()) +app.use(express.json()) -// Start defining your routes here -// http://localhost:8080/ +//List endpoints app.get("/", (req, res) => { - res.send("Hello Technigo!"); -}); + const endpoints = expressListEndpoints(app) + res.json(endpoints) +}) +//Routes +app.use(authRoutes) +app.use(reviewRoutes) +app.use(favoriteRoutes) +app.use(museumRoutes) // Start the server app.listen(port, () => { - console.log(`Server running on http://localhost:${port}`); -}); \ No newline at end of file + console.log(`Server running on http://localhost:${port}`) +}) diff --git a/frontend/README.md b/frontend/README.md deleted file mode 100644 index 5cdb1d9cf..000000000 --- a/frontend/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Frontend part of Final Project - -This boilerplate is designed to give you a head start in your React projects, with a focus on understanding the structure and components. As a student of Technigo, you'll find this guide helpful in navigating and utilizing the repository. - -## Getting Started - -1. Install the required dependencies using `npm install`. -2. Start the development server using `npm run dev`. \ No newline at end of file diff --git a/frontend/index.html b/frontend/index.html index 664410b5b..00eaf994c 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,9 +2,21 @@
- + + + + + + + -{message}
++ Discover hidden treasures and captivating cultural wonders with + MuSeek. Register now to begin your journey and experience an authentic + alternative to mainstream tourist attractions.{" "} +
+© 2024 MuSeek. All rights reserved.
+
+
{comment.userName}
+ )}{" "} +{modalMessage}
} +{museum.theme}
+{museum.location}
+ +{museum.location}
+ {showLink && ( ++ Sign up & receive exclusive updates about collections, exhibitions, + and events +
++ Welcome to MuSeek, your portal to discovering hidden treasures in the + world of museums. Developed by Alma and Etna as our final project at + the Technigo web development bootcamp, MuSeek is a unique webpage + crafted for the curious traveler and cultural enthusiast. +
+ ++ With MuSeek, explore lesser-known museums from around the globe, + offering an authentic alternative to mainstream tourist attractions. + Powered by React, Node.js, and styled components, our platform ensures + a seamless and visually engaging experience as you embark on a journey + to uncover captivating cultural wonders. +
+ ++ Whether you seek off-the-beaten-path destinations or simply crave a + new perspective, MuSeek is your trusted companion for enriching museum + exploration. +
+{museum.location}
+This museum has no cafe or restaurant on its premises
+ )} ++ {day}: {time} +
+ ) + })} ++ setModalOpen(true)} + style={{ cursor: "pointer", color: "blue" }}> + Log in + {" "} + to leave a review or read what visitors liked about this museum. +
+ )} +Logging in...
++ Oh no! You've uncovered a missing exhibit. This page is as elusive as + a hidden treasure. But don't worry, there are hundreds of museum to + explore! +
{" "} + +User being created...
++ You need to be logged in to view your personal page. Please log in + or create a user account to get started. +
+