Compare commits

..

6 Commits

Author SHA1 Message Date
41020cdc00 fix: postgresql container volume
All checks were successful
Backend CI / Run Maven Tests (push) Successful in 28s
Reviewed-on: #7
Co-authored-by: Jarno Kiesiläinen <jarnokie@gmail.com>
Co-committed-by: Jarno Kiesiläinen <jarnokie@gmail.com>
2025-08-11 17:29:43 +00:00
b4cd05e7b2 Updated datamodel picture in the readme
Reviewed-on: #6
Co-authored-by: Jarno Kiesiläinen <jarnokie@gmail.com>
Co-committed-by: Jarno Kiesiläinen <jarnokie@gmail.com>
2025-08-07 16:36:08 +00:00
286699a1a8 Initial implementation for the backend persistence of activities (#5)
All checks were successful
Backend CI / Run Maven Tests (push) Successful in 27s
Reviewed-on: #5
Co-authored-by: Jarno Kiesiläinen <jarnokie@gmail.com>
Co-committed-by: Jarno Kiesiläinen <jarnokie@gmail.com>
2025-08-07 16:17:46 +00:00
c3764176ac Backend project initialized
All checks were successful
Backend CI / Run Maven Tests (push) Successful in 27s
Co-authored-by: Jarno Kiesiläinen <jarnokie@gmail.com>
Co-committed-by: Jarno Kiesiläinen <jarnokie@gmail.com>
2025-08-02 19:27:17 +00:00
47ac6f4c74 Merge pull request 'feat: added mock search results' (#3) from feature/mock-search-results into main
All checks were successful
Frontend CI / Lint and Build Frontend (push) Successful in 20s
Reviewed-on: http://git.naali.duckdns.org/jarno/vibing/pulls/3
2025-08-02 16:51:57 +00:00
dc26a8c467 Merge pull request 'feature/ci-cd-pipeline' (#2) from feature/ci-cd-pipeline into main
Reviewed-on: http://git.naali.duckdns.org/jarno/vibing/pulls/2
2025-08-02 12:24:15 +00:00
10 changed files with 135 additions and 26 deletions

View File

@@ -0,0 +1,32 @@
## Brief overview
Project-specific frontend color theme guidelines for the vibing application. Defines a cohesive peach/coral/pink color palette with specific CSS custom properties, component styling patterns, and accessibility requirements.
## Color palette usage
- Always use the defined peach-coral color scheme: Primary Peach (#FFCDB2), Secondary Coral (#FFB4A2), Light Pink (#E5989B), Medium Mauve (#B5838D), Dark Purple (#6D6875)
- Implement CSS custom properties in src/index.css for all color definitions
- Use semantic color naming: --color-primary, --color-secondary, --color-bg-dark, --color-text-primary, etc.
- Support both dark and light modes using @media (prefers-color-scheme: light)
## Component styling patterns
- Buttons: Use gradient backgrounds, implement translateY(-2px) hover animations, apply consistent focus states with peach outline
- Cards: White backgrounds with subtle shadows, translateY(-8px) hover animations, 16px border radius, scale(1.05) image hover effects
- Links: Primary color #FFCDB2, hover colors #E5989B (dark mode) or #B5838D (light mode), no text decoration by default
- Use semantic CSS class names: .btn-primary, .btn-secondary, .btn-outline, .btn-ghost
## Interactive states and animations
- Apply subtle lift animations using transform: translateY(-2px) for hover effects
- Use rgba(255, 205, 178, 0.3) for focus rings and primary shadows
- Use rgba(229, 152, 155, 0.3) for secondary shadows
- Ensure hover states are distinct from focus states for accessibility
## File organization structure
- Place global styles and CSS custom properties in src/index.css
- Create individual .css files in src/components/ for component-specific styles
- Use src/App.css for utility classes
- Consider src/styles/ directory for additional theme files when needed
## Accessibility requirements
- Maintain minimum contrast ratios: 4.5:1 for normal text, 3:1 for large text
- Use --color-focus for focus indicators
- Test with color blindness simulators
- Ensure all interactive elements have proper focus states

View File

@@ -0,0 +1,38 @@
## Brief overview
Project-specific git workflow guidelines emphasizing feature branch development, conventional commit messages, and proper branch management practices. Never work directly on main/master branches.
## Branch management strategy
- Always create feature branches for all development work
- Use kebab-case naming: feature/user-authentication, bugfix/login-validation, hotfix/security-patch, refactor/api-endpoints
- Keep feature branches short-lived (1-3 days ideally)
- One feature per branch, don't mix different types of changes
- Delete branches after successful merge
## Commit message conventions
- Use conventional commit format: type(scope): description
- Use present tense ("add feature" not "added feature")
- Be specific and descriptive in commit messages
- Reference issue numbers when applicable: feat(auth): add OAuth login #123
- Make frequent, small commits with clear purposes
## Development workflow steps
- Always start by ensuring main branch is up to date: git checkout main && git pull origin main
- Create new feature branch: git checkout -b feature/your-feature-name
- Before pushing, rebase with main: git fetch origin && git rebase origin/main
- Push feature branch: git push origin feature/your-feature-name
- Create Pull Request from feature branch to main
- Only merge after code review approval
## Code review requirements
- Create PR for all changes, no direct commits to main
- Request reviews from team members
- Address all feedback before merging
- Ensure all tests pass before creating PR
- Self-review changes before requesting reviews
- Update documentation when needed
## Emergency procedures
- For critical issues, create hotfix branches from main
- Make minimal necessary changes in hotfixes
- Test thoroughly before creating emergency PR
- Follow same review process even for hotfixes

View File

@@ -41,4 +41,4 @@ jobs:
with: with:
name: backend-test-results name: backend-test-results
path: backend/target/surefire-reports/ path: backend/target/surefire-reports/
retention-days: 7 retention-days: 7

View File

@@ -5,10 +5,28 @@
```mermaid ```mermaid
classDiagram classDiagram
class Activity { class Activity {
+Long id
+String name +String name
+Location location +Location location
+Int priceRange +Integer priceRange
+List~String~ tags +List~String~ tags
+String description
+LocalDateTime createdAt
+LocalDateTime updatedAt
} }
class Location {
+Long id
+String name
+String address
+String city
+String country
+String postalCode
+Double latitude
+Double longitude
+LocalDateTime createdAt
+LocalDateTime updatedAt
}
Activity <-- Location : belongs to
``` ```

View File

@@ -74,6 +74,12 @@
<artifactId>spring-security-test</artifactId> <artifactId>spring-security-test</artifactId>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<!-- JSON Processing --> <!-- JSON Processing -->
<dependency> <dependency>
@@ -132,4 +138,4 @@
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@@ -1,5 +1,5 @@
server: server:
port: 8080 port: 8090
servlet: servlet:
context-path: /api context-path: /api
@@ -9,7 +9,7 @@ spring:
# Database Configuration # Database Configuration
datasource: datasource:
url: jdbc:postgresql://localhost:5432/vibing url: jdbc:postgresql://dind:5432/vibing
username: vibing username: vibing
password: vibing password: vibing
driver-class-name: org.postgresql.Driver driver-class-name: org.postgresql.Driver

View File

@@ -1,5 +1,18 @@
CREATE SCHEMA IF NOT EXISTS vibing; CREATE SCHEMA IF NOT EXISTS vibing;
CREATE TABLE IF NOT EXISTS vibing.locations (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
address TEXT,
city TEXT,
country TEXT,
postal_code TEXT,
latitude DOUBLE PRECISION,
longitude DOUBLE PRECISION,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS vibing.activities ( CREATE TABLE IF NOT EXISTS vibing.activities (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
name TEXT NOT NULL, name TEXT NOT NULL,
@@ -20,17 +33,3 @@ CREATE TABLE IF NOT EXISTS vibing.activity_tags (
FOREIGN KEY (activity_id) REFERENCES vibing.activities(id) ON DELETE CASCADE, FOREIGN KEY (activity_id) REFERENCES vibing.activities(id) ON DELETE CASCADE,
PRIMARY KEY (activity_id, tag) PRIMARY KEY (activity_id, tag)
); );
CREATE TABLE IF NOT EXISTS vibing.locations (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
address TEXT,
city TEXT,
country TEXT,
postal_code TEXT,
latitude DOUBLE PRECISION,
longitude DOUBLE PRECISION,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

View File

@@ -2,15 +2,17 @@ package com.vibing.backend;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;
/** /**
* Basic test class for the Vibing Backend application. * Basic test class for the Vibing Backend application.
*/ */
@SpringBootTest @SpringBootTest
@ActiveProfiles("test")
class VibingBackendApplicationTests { class VibingBackendApplicationTests {
@Test @Test
void contextLoads() { void contextLoads() {
// This test verifies that the Spring application context loads successfully // This test verifies that the Spring application context loads successfully
} }
} }

View File

@@ -1,10 +1,21 @@
spring: spring:
datasource: datasource:
url: jdbc:postgresql://localhost:5432/your_test_database url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL
username: test_user username: sa
password: test_password password:
driver-class-name: org.h2.Driver
h2:
console:
enabled: true
jpa:
hibernate:
ddl-auto: none # Let Flyway handle schema creation
show-sql: true
database-platform: org.hibernate.dialect.H2Dialect
flyway: flyway:
enabled: true enabled: true
clean-disabled: false # Allow clean in tests clean-disabled: false # Allow clean in tests
locations: classpath:db/migration locations: classpath:db/migration

View File

@@ -8,4 +8,7 @@ services:
POSTGRES_PASSWORD: vibing POSTGRES_PASSWORD: vibing
POSTGRES_DB: vibing POSTGRES_DB: vibing
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - postgres_data:/var/lib/postgresql/data
volumes:
postgres_data: