Skip to content

Jony251/coin-catalog

Repository files navigation

🪙 Каталог Монет Царской России

Мобильное приложение для коллекционеров монет Российской Империи (1682-1917). Каталог монет, управление личной коллекцией, статистика и аналитика.

📱 Особенности

  • Полный каталог монет Российской Империи от Петра I до Николая II
  • Управление коллекцией - добавляйте монеты, отслеживайте покупки
  • Вишлист - список желаемых монет
  • Статистика - анализ коллекции, прибыль/убыток
  • Работа с датами - отслеживание времени в коллекции
  • Поиск и фильтрация - быстрый поиск по каталогу
  • Группировка по номиналам - золото, серебро, медь
  • Кроссплатформенность - iOS, Android, Web

🏗️ Архитектура

Проект использует современную классовую архитектуру:

Country (Страна)
  └── Period (Период: Империя)
      └── Ruler (Правитель)
          └── Coin (Монета)

User
  └── UserCollection
      └── UserCoin (Монета в коллекции)

Технологии:

  • React Native + Expo
  • SQLite (мобильные устройства)
  • localStorage (веб)
  • Классовая архитектура данных
  • Готовность к синхронизации с сервером

📚 Документация

Вся необходимая документация находится в этом файле.

🚀 Быстрый старт

Установка зависимостей

npm install

Конфигурация (опционально)

Файл .env создан для будущего использования с API сервером. Сейчас приложение работает полностью локально и не требует настройки.

Запуск

# Запуск на iOS
npm run ios

# Запуск на Android
npm run android

# Запуск в веб
npm run web

💻 Использование

Работа с каталогом

import { databaseService } from './services';

// Получить всех правителей
const rulers = await databaseService.getRulers();

// Получить монеты правителя
const coins = await databaseService.getCoinsByRuler('peter1');

// Поиск монет
const results = await databaseService.searchCoins('рубль 1725');

Управление коллекцией

import { userCollectionService } from './services';

// Добавить монету в коллекцию
await userCollectionService.addCoin('coin_id', {
  purchasePrice: 15000,
  purchaseDate: new Date('2024-01-15'),
  condition: 'VF',
  notes: 'Куплена на аукционе'
});

// Получить коллекцию
const collection = await userCollectionService.getUserCoins(false);

// Статистика
const stats = await userCollectionService.getCollectionStats();
console.log('Монет:', stats.collectionCount);
console.log('Стоимость:', stats.totalValue);
console.log('Прибыль:', stats.profitLoss);

Работа с датами

// Все даты автоматически преобразуются в Date объекты
const userCoin = collection[0];

console.log('Дней в коллекции:', userCoin.getDaysInCollection());
console.log('Месяцев:', userCoin.getMonthsInCollection());
console.log('Год покупки:', userCoin.getPurchaseYear());
console.log('Прибыль:', userCoin.getProfitLoss());

📊 Структура проекта

coin_catalog/
├── models/                    # Модели данных (Country, Period, Ruler, Coin, UserCoin)
├── services/                  # Сервисы (DatabaseService, UserCollectionService)
├── data/                      # Каталог монет
├── app/                       # React Native компоненты
│   ├── (tabs)/               # Главные вкладки
│   ├── auth/                 # Авторизация
│   ├── coin/                 # Детали монеты
│   ├── ruler/                # Детали правителя
│   └── denomination/         # Группы номиналов
├── stores/                    # Mobx stores
└── assets/                    # Изображения и ресурсы

🎯 Основные модели

Ruler (Правитель)

ruler.getReignYears()        // "1682-1725"
ruler.getReignDuration()     // 43
ruler.getAgeAtStart()        // 10

Coin (Монета)

coin.getEstimatedValue()     // Средняя стоимость
coin.isRare()                // Редкая монета?
coin.getMetalType()          // "gold", "silver", "copper"
coin.getAge()                // Возраст монеты

UserCoin (Монета в коллекции)

userCoin.getDaysInCollection()    // Дней в коллекции
userCoin.getCurrentValue()        // Текущая стоимость
userCoin.getProfitLoss()          // Прибыль/убыток
userCoin.getProfitLossPercent()   // Процент прибыли

🔄 Синхронизация

Коллекция пользователя готова к синхронизации с сервером:

  • Автоматическое отслеживание изменений (needsSync флаг)
  • Мягкое удаление (isDeleted флаг)
  • Метки времени синхронизации

📝 Каталог данных

Каталог включает:

  • Правителей: от Петра I (1682) до Николая II (1917)
  • Монеты: золотые, серебряные, медные
  • Детали: год, номинал, металл, вес, диаметр, тираж, редкость, стоимость
  • Изображения: аверс и реверс монет

🛠️ Технологический стек

  • Frontend: React Native, Expo
  • База данных: SQLite (мобильные), localStorage (веб)
  • Навигация: Expo Router
  • Состояние: MobX
  • Стиль: React Native StyleSheet

📱 Скриншоты

(Добавьте скриншоты приложения)

🤝 Вклад в проект

Приветствуются любые улучшения:

  1. Fork репозитория
  2. Создайте ветку (git checkout -b feature/amazing-feature)
  3. Commit изменения (git commit -m 'Add amazing feature')
  4. Push в ветку (git push origin feature/amazing-feature)
  5. Откройте Pull Request

📄 Лицензия

MIT License

👨‍💻 Автор

Jony251

🙏 Благодарности

  • Данные каталога собраны из открытых источников
  • Изображения монет из Wikimedia Commons

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published