Skip to content

ByalykT02/DP_24-F_byalykt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

66 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GalleryGlobe

A modern web application for exploring fine art collections, built with Next.js 14 and TypeScript.

Features

  • Browse and discover artworks from various artists and periods
  • View detailed artist profiles with biographical information
  • Explore artwork details with high-resolution images
  • Responsive design for optimal viewing on all devices
  • Integration with WikiArt API for extensive art database access
  • Server-side rendering for improved performance
  • Authentication system using NextAuth.js

Tech Stack

  • Frontend: Next.js 14, TypeScript, TailwindCSS
  • UI Components: Shadcn UI, Lucide Icons
  • Database: PostgreSQL with Drizzle ORM
  • Authentication: NextAuth.js
  • API Integration: WikiArt API
  • Styling: Tailwind CSS with custom components

Getting Started

Prerequisites

  • Node.js 18+
  • PostgreSQL database

Installation

  1. Clone the repository:
git clone https://github.com/ByalykT02/DP_24-F_byalykt
  1. Install dependencies:
cd galleryglobe
npm install
  1. Set up environment variables:
cp .env.example .env

Fill in the following variables:

DATABASE_URL=
POSTGRES_PRISMA_URL=
POSTGRES_URL_NO_SSL=
POSTGRES_URL_NON_POOLING=
POSTGRES_USER=
POSTGRES_HOST=
POSTGRES_PASSWORD=
POSTGRES_DATABASE=
NEXTAUTH_SECRET=
NEXTAUTH_URL=
WIKIART_ACCESS_KEY=
WIKIART_SECRET_KEY=
  1. Run database migrations:
npm run db:push
  1. Start the development server:
npm run dev

Project Structure

src/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ (protected)/     # Protected routes (collections, profile, etc.)
β”‚   β”œβ”€β”€ (public)/        # Public routes (explore, categories)
β”‚   β”œβ”€β”€ api/            # API routes
β”‚   β”œβ”€β”€ artists/        # Artist-related pages
β”‚   β”œβ”€β”€ artworks/       # Artwork-related pages
β”‚   └── auth/           # Authentication pages
β”œβ”€β”€ components/
β”‚   β”œβ”€β”€ auth/           # Authentication components
β”‚   β”œβ”€β”€ collections/    # Collection-related components
β”‚   β”œβ”€β”€ common/         # Shared components
β”‚   β”œβ”€β”€ form/           # Form components
β”‚   β”œβ”€β”€ home/           # Homepage components
β”‚   β”œβ”€β”€ preferences/    # User preference components
β”‚   β”œβ”€β”€ profile/        # Profile management components
β”‚   β”œβ”€β”€ recommendations/# Recommendation components
β”‚   β”œβ”€β”€ search/         # Search components
β”‚   └── ui/             # UI components
β”œβ”€β”€ hooks/              # Custom React hooks
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ types/          # TypeScript interfaces
β”‚   └── utils/          # Utility functions
└── server/
    β”œβ”€β”€ actions/        # Server actions
    └── db/             # Database configuration

Key Features Details

Collections Management

  • Create and manage personal collections
  • Toggle collection visibility (public/private)
  • Add/remove artworks from collections
  • Browse public collections from other users

User Profile System

  • Edit profile information
  • Change password securely
  • View personal favorites
  • Track viewing history
  • Manage collections

Search Functionality

  • Real-time artwork and artist search
  • Search results categorization
  • Quick navigation to results

Artwork Discovery

  • Browse popular artworks
  • View detailed artwork information
  • Similar artwork recommendations
  • High-resolution image viewing

Artist Exploration

  • Browse popular artists with biographical information
  • View artist's complete artwork collection
  • Timeline of artist's periods and career
  • Related artists and influences

Development

Running Tests

npm run test

Linting

npm run lint

Building for Production

npm run build

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

  • WikiArt API for providing the artwork database
  • Next.js team for the amazing framework
  • Shadcn for accessible component primitives

Contact

Project Link: https://github.com/ByalykT02/DP_24-F_byalykt

Releases

No releases published

Packages

No packages published

Languages