diff --git a/backend.zip b/backend.zip new file mode 100644 index 00000000..43907107 Binary files /dev/null and b/backend.zip differ diff --git a/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/configuration/application.properties b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/configuration/application.properties new file mode 100644 index 00000000..123482a2 --- /dev/null +++ b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/configuration/application.properties @@ -0,0 +1,7 @@ +server.port=8080 +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=password +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.h2.console.enabled=true diff --git a/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/controller/ActivityController.java b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/controller/ActivityController.java new file mode 100644 index 00000000..06c7064d --- /dev/null +++ b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/controller/ActivityController.java @@ -0,0 +1,28 @@ +package com.getactive.controller; + +import com.getactive.model.Activity; +import com.getactive.service.ActivityService; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/activities") +@CrossOrigin(origins = "*") // Enable Cross-Origin for frontend requests +public class ActivityController { + private final ActivityService service; + + public ActivityController(ActivityService service) { + this.service = service; + } + + @GetMapping + public List getAllActivities() { + return service.getAll(); + } + + @PostMapping + public Activity createActivity(@RequestBody Activity activity) { + return service.create(activity); + } +} diff --git a/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/model/Activity.java b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/model/Activity.java new file mode 100644 index 00000000..a0ac5144 --- /dev/null +++ b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/model/Activity.java @@ -0,0 +1,15 @@ +package com.getactive.model; + +import jakarta.persistence.*; +import java.time.LocalDateTime; + +@Entity +public class Activity { + @Id @GeneratedValue + private Long id; + private String title; + private String location; + private LocalDateTime datetime; + + // Getters and Setters +} diff --git a/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/repository/ActivityRepository.java b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/repository/ActivityRepository.java new file mode 100644 index 00000000..f0153729 --- /dev/null +++ b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/repository/ActivityRepository.java @@ -0,0 +1,6 @@ +package com.getactive.repository; + +import com.getactive.model.Activity; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ActivityRepository extends JpaRepository {} diff --git a/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/service/ActivityService.java b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/service/ActivityService.java new file mode 100644 index 00000000..f5464d93 --- /dev/null +++ b/code/backend/getactivecore/src/main/java/com/bu/getactivecore/model/service/ActivityService.java @@ -0,0 +1,24 @@ +package com.getactive.service; + +import com.getactive.model.Activity; +import com.getactive.repository.ActivityRepository; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ActivityService { + private final ActivityRepository repository; + + public ActivityService(ActivityRepository repository) { + this.repository = repository; + } + + public List getAll() { + return repository.findAll(); + } + + public Activity create(Activity activity) { + return repository.save(activity); + } +} diff --git a/code/frontend/src/components/ActivityCard.jsx b/code/frontend/src/components/ActivityCard.jsx new file mode 100644 index 00000000..58dcb912 --- /dev/null +++ b/code/frontend/src/components/ActivityCard.jsx @@ -0,0 +1,11 @@ +import React from 'react'; + +const ActivityCard = ({ activity }) => ( +
+

{activity.title}

+

{new Date(activity.datetime).toLocaleString()}

+

{activity.location}

+
+); + +export default ActivityCard; \ No newline at end of file diff --git a/code/frontend/src/pages/CreateActivityPage.jsx b/code/frontend/src/pages/CreateActivityPage.jsx new file mode 100644 index 00000000..f972567b --- /dev/null +++ b/code/frontend/src/pages/CreateActivityPage.jsx @@ -0,0 +1,23 @@ +import React, { useState } from 'react'; +import { createActivity } from '../services/api'; + +const CreateActivityPage = () => { + const [form, setForm] = useState({ title: '', datetime: '', location: '' }); + + const handleSubmit = async (e) => { + e.preventDefault(); + await createActivity(form); + alert('Activity created!'); + }; + + return ( +
+ setForm({ ...form, title: e.target.value })} placeholder="Title" required /> + setForm({ ...form, datetime: e.target.value })} required /> + setForm({ ...form, location: e.target.value })} placeholder="Location" required /> + +
+ ); +}; + +export default CreateActivityPage; diff --git a/code/frontend/src/pages/DiscoverPage.jsx b/code/frontend/src/pages/DiscoverPage.jsx new file mode 100644 index 00000000..a23cec4d --- /dev/null +++ b/code/frontend/src/pages/DiscoverPage.jsx @@ -0,0 +1,24 @@ +import React, { useEffect, useState } from 'react'; +import ActivityCard from '../components/ActivityCard'; +import { fetchActivities } from '../services/api'; + +const DiscoverPage = () => { + const [activities, setActivities] = useState([]); + + useEffect(() => { + fetchActivities().then(setActivities); + }, []); + + return ( +
+

Discover Activities

+
+ {activities.map((activity) => ( + + ))} +
+
+ ); +}; + +export default DiscoverPage; diff --git a/code/frontend/src/services/api1.js b/code/frontend/src/services/api1.js new file mode 100644 index 00000000..58dcb912 --- /dev/null +++ b/code/frontend/src/services/api1.js @@ -0,0 +1,11 @@ +import React from 'react'; + +const ActivityCard = ({ activity }) => ( +
+

{activity.title}

+

{new Date(activity.datetime).toLocaleString()}

+

{activity.location}

+
+); + +export default ActivityCard; \ No newline at end of file diff --git a/frontend.zip b/frontend.zip new file mode 100644 index 00000000..3d228c56 Binary files /dev/null and b/frontend.zip differ