Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added backend.zip
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need this zip file?

Binary file not shown.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dont duplicate files, work from the existing code from main branch

Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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<Activity> getAllActivities() {
return service.getAll();
}

@PostMapping
public Activity createActivity(@RequestBody Activity activity) {
return service.create(activity);
}
}
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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<Activity, Long> {}
Original file line number Diff line number Diff line change
@@ -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<Activity> getAll() {
return repository.findAll();
}

public Activity create(Activity activity) {
return repository.save(activity);
}
}
11 changes: 11 additions & 0 deletions code/frontend/src/components/ActivityCard.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import React from 'react';

const ActivityCard = ({ activity }) => (
<div className="border p-3 my-2">
<h2>{activity.title}</h2>
<p>{new Date(activity.datetime).toLocaleString()}</p>
<p>{activity.location}</p>
</div>
);

export default ActivityCard;
23 changes: 23 additions & 0 deletions code/frontend/src/pages/CreateActivityPage.jsx
Original file line number Diff line number Diff line change
@@ -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 (
<form onSubmit={handleSubmit}>
<input name="title" onChange={(e) => setForm({ ...form, title: e.target.value })} placeholder="Title" required />
<input type="datetime-local" name="datetime" onChange={(e) => setForm({ ...form, datetime: e.target.value })} required />
<input name="location" onChange={(e) => setForm({ ...form, location: e.target.value })} placeholder="Location" required />
<button type="submit">Create</button>
</form>
);
};

export default CreateActivityPage;
24 changes: 24 additions & 0 deletions code/frontend/src/pages/DiscoverPage.jsx
Original file line number Diff line number Diff line change
@@ -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 (
<div className="p-4">
<h1>Discover Activities</h1>
<div>
{activities.map((activity) => (
<ActivityCard key={activity.id} activity={activity} />
))}
</div>
</div>
);
};

export default DiscoverPage;
11 changes: 11 additions & 0 deletions code/frontend/src/services/api1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import React from 'react';

const ActivityCard = ({ activity }) => (
<div className="border p-3 my-2">
<h2>{activity.title}</h2>
<p>{new Date(activity.datetime).toLocaleString()}</p>
<p>{activity.location}</p>
</div>
);

export default ActivityCard;
Binary file added frontend.zip
Binary file not shown.
Loading