diff --git a/.clinerules/frontend-color-theme.md b/.clinerules/frontend-color-theme.md
new file mode 100644
index 0000000..8b8b86d
--- /dev/null
+++ b/.clinerules/frontend-color-theme.md
@@ -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
diff --git a/.clinerules/git-workflow.md b/.clinerules/git-workflow.md
new file mode 100644
index 0000000..87f31a0
--- /dev/null
+++ b/.clinerules/git-workflow.md
@@ -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
diff --git a/backend/pom.xml b/backend/pom.xml
index c2fc485..52dc476 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -74,6 +74,12 @@
spring-security-test
test
+
+
+ com.h2database
+ h2
+ test
+
@@ -132,4 +138,4 @@
-
\ No newline at end of file
+
diff --git a/backend/src/main/resources/db/migration/V1__initial_schema.sql b/backend/src/main/resources/db/migration/V1__initial_schema.sql
index 5a843d9..02b0a92 100644
--- a/backend/src/main/resources/db/migration/V1__initial_schema.sql
+++ b/backend/src/main/resources/db/migration/V1__initial_schema.sql
@@ -1,5 +1,18 @@
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 (
id SERIAL PRIMARY KEY,
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,
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
-);
-
diff --git a/backend/src/test/java/com/vibing/backend/VibingBackendApplicationTests.java b/backend/src/test/java/com/vibing/backend/VibingBackendApplicationTests.java
index 02d8a52..4469286 100644
--- a/backend/src/test/java/com/vibing/backend/VibingBackendApplicationTests.java
+++ b/backend/src/test/java/com/vibing/backend/VibingBackendApplicationTests.java
@@ -2,15 +2,17 @@ package com.vibing.backend;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.ActiveProfiles;
/**
* Basic test class for the Vibing Backend application.
*/
@SpringBootTest
+@ActiveProfiles("test")
class VibingBackendApplicationTests {
@Test
void contextLoads() {
// This test verifies that the Spring application context loads successfully
}
-}
\ No newline at end of file
+}
diff --git a/backend/src/test/resources/application-test.yml b/backend/src/test/resources/application-test.yml
index 8d92abd..b056451 100644
--- a/backend/src/test/resources/application-test.yml
+++ b/backend/src/test/resources/application-test.yml
@@ -1,10 +1,21 @@
spring:
datasource:
- url: jdbc:postgresql://localhost:5432/your_test_database
- username: test_user
- password: test_password
+ url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL
+ username: sa
+ 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:
enabled: true
clean-disabled: false # Allow clean in tests
- locations: classpath:db/migration
\ No newline at end of file
+ locations: classpath:db/migration