Jumpstarter
Легковесный PHP-фреймворк, разработанный для создания высокопроизводительных веб-приложений. Архитектура основана на принципах минимализма, прозрачности кода и отсутствия внешних зависимостей по умолчанию.
от 54 900 ₽ / год
ПО для ЭВМ "Jumpstarter" зарегистрировано Федеральной службой по интеллектуальной собственности. Свидетельство о регистрации №2022680506.
Производительность
Безопасность
Zero-Dependency
Код должен быть понятен разработчику с первого прочтения. Каждая абстракция должна иметь явную цель. Безопасность не должна быть опцией.
Требования к окружению
| Компонент | Версия | Примечание |
|---|---|---|
| PHP | 7.4+ | Рекомендуем 8.4+ |
| Веб-сервер | Apache 2.4+ / Nginx | Требуется mod_rewrite для Apache |
| База данных | Любая с поддержкой PDO | MySQL, PostgreSQL, SQLite, SQL Server, Oracle |
| Расширения PHP | pdo, mbstring, json, curl, openssl | Обязательные |
| Опционально | imagick или gd | Для обработки изображений |
Рекомендуемая конфигурация php.ini
memory_limit = 256M
max_execution_time = 300
upload_max_filesize = 32M
post_max_size = 32M
session.cookie_httponly = 1
session.cookie_secure = 1
session.use_strict_mode = 1
Архитектура системы
Веб-запрос
↓
index.php (Entry Point)
↓
Router (Парсинг URL, Валидация)
↓
Controller (Бизнес-логика, Модели)
↓
View (HTML, Локализация)
| Класс | Назначение |
|---|---|
Router | Маршрутизация запросов |
DBN | Абстракция работы с БД |
DB_Cache | Файловое кэширование |
Storage | Сессии, куки, JSON-конфиги |
App | Базовая логика, права, поиск |
Utilites | Email, геокодер, captcha, UUID |
Formatting | Даты, деньги, телефоны, JSON |
Langs | Система локализации |
Images | Обработка изображений |
Установка и настройка
- Скопируйте файлы в корень сайта:
cp -r Jumpstarter/* /var/www/your-site/ - Настройте права:
chmod -R 775 upload/ application/data/ - Отредактируйте
application/config.phpиapplication/data/db.json
Конфигурация БД (application/data/db.json)
{
"driver": "mysql",
"host": "localhost:3306",
"database": "your_database",
"username": "your_username",
"password": "your_password",
"charset": "utf8mb4",
"collation": "utf8mb4_general_ci",
"prefix": "",
"cachedir": "/var/www/your-site/application/data/cache"
}
Ядро фреймворка
Точка входа: index.php
<?php
require_once dirname(__FILE__) . '/application/protection.php';
require_once dirname(__FILE__) . '/application/config.php';
$router = new Router($_SERVER['REQUEST_URI']);
$controller = ucfirst($router->getController()) . 'Controller';
$method = $router->getMethodPrefix() . $router->getAction();
// Выполнение и передача данных в шаблон
$results = Storage::get_default((new $controller())->$method());
require_once $results['templates'] . DS . $router->getController() . DS . $method . '.php';
Автозагрузка классов
spl_autoload_register(function ($class_name) {
$systemPrefixes = ['Imagick', 'PDO', 'Composer'];
foreach ($systemPrefixes as $p) if (strpos($class_name, $p) === 0) return;
$is_controller = preg_match('/Controller$/', $class_name);
$path = $is_controller
? CONTROLLERS . DS . preg_replace('/controller$/', '.', strtolower($class_name)) . 'controller.php'
: MODELS . DS . ucfirst($class_name) . '.php';
if (file_exists($path)) require_once($path);
elseif ($is_controller) Router::set_code(404);
});
Работа с базой данных
Класс DBN: Fluent-интерфейс
$article = Db::connect('articles')->where(['id' => 123])->get();
$articles = Db::connect('articles')
->select(['id', 'title', 'publication_date'])
->where(['status' => 1])
->orderBy('publication_date', 'DESC')
->limit(20)->offset(0)->getAll();
$id = Db::connect('articles')->insert(['title' => 'Новая статья', 'sef' => 'novaya', 'status' => 1]);
Db::connect('articles')->where(['id' => $id])->update(['views' => $article->views + 1]);
Кэширование запросов
$articles = Db::connect('articles')
->cache(3600) // Файловый кэш на 1 час
->where(['status' => 1])->getAll();
Транзакции
$db = Db::connect('orders');
try {
$db->transaction();
$order_id = $db->insert(['user_id' => 123, 'status' => 'new']);
// ... вставка позиций
$db->commit();
} catch (Exception $e) { $db->rollBack(); }
Система маршрутизации
Формат: /{route}/{controller}/{action}/{sef}?{params}
| Префикс | Шаблон | Назначение |
|---|---|---|
| (пустой) | default | Публичная часть |
admin_ | admin | Панель управления |
cabinet_ | cabinet | Личный кабинет |
api_ | default | API-эндпоинты |
$router = new Router($url);
echo $router->getRoute(); // 'default' | 'admin' | ...
echo $router->getMethodPrefix(); // '' | 'admin_' | ...
echo $router->getController(); // 'articles' | ...
echo $router->getAction(); // 'index' | ...
echo $router->getSef(); // SEO-параметр
Безопасность
Файл application/protection.php устанавливает промышленные заголовки:
header("Content-Security-Policy: default-src 'none'; script-src 'self' 'nonce-$nonce'; ...");
header("Strict-Transport-Security: max-age=31536000; includeSubDomains; preload");
header("X-Frame-Options: SAMEORIGIN");
header("Permissions-Policy: geolocation=(), microphone=(), camera=()");
header("Cross-Origin-Opener-Policy: same-origin");
Проверка доступа
App::check_auth(); // Редирект на логин если не авторизован
if (App::check_permission('articles') !== 200) Router::set_code(403);
Rate Limiting & Форма
if (!App::checkRateLimit()) Router::set_code(429);
if (!App::validateFormSubmission()) Router::set_code(403); // Honeypot + CSRF + поведение + время
Шаблонизация и представление
Структура
views/
├── default/ (public)
├── cabinet/ (user)
└── admin/ (panel)
└── templates/{controller}/{action}.php
Передача данных
// Controller
return ['articles' => $articles, 'seo' => [...]];
// View
<?php foreach ($results['articles'] as $a): ?>
<h2><?= htmlspecialchars($a->title) ?></h2>
<?php endforeach; ?>
Локализация
echo Langs::get('titles', 'Articles'); // → "Статьи"
// Авто-создание недостающих ключей в application/data/lang/{ru,en}.json
Система расширений
application/extensions/telegram/
├── info.json
├── readme.md
├── img/logo.webp
└── snippets/
├── config.php
└── auth.php
info.json
{
"name": "telegram",
"title": "Telegram Integration",
"version": "1.0.0",
"config_fields": [
{"name": "bot_token", "type": "text", "label": "Bot Token"}
]
}
if (Storage::json('check', CONF, 'telegram')) {
$config = Storage::json('get', CONF, 'telegram');
}
Утилиты и вспомогательные классы
Utilites
Utilites::transmitter([...], 'template', 'self');
$coords = Utilites::geocoder('Москва, Красная площадь, 1');
$uuid = Utilites::uuid4();
$sri = Utilites::getSriHash('https://cdn.example.com/script.js');
Formatting
Formatting::phone('+79991234567', 'mobile'); // +7 (999) 123-45-67
Formatting::money(1234.56, 2, 'ru_RU', 'RUR'); // 1 234,56 ₽
Formatting::json(['status' => 'ok'], 200); // JSON-ответ с заголовками
API-референс
Глобальные константы
DS, ROOT, CONF, MODELS, CONTROLLERS, SITE_URL, DEFAULT_LANG
Функции-хелперы
checkAndSetCookie($name, $value);
csrf_token();
Db::connect('articles'); // Алиас для new DBN()
Сервисные операции с БД
Db::service('articles', 'optimize');
Db::service('articles', 'check');
Db::service('articles', 'repair');
Разработка модулей
class YourmoduleController {
public function public_index() { return ['items' => Db::connect('your_table')->getAll()]; }
public function admin_index() { App::check_auth(); return ['items' => Db::connect('your_table')->getAll()]; }
}class Yourmodule {
public static function add($data) {
$id = Db::connect('your_table')->insert($data);
Log::set(User::get_data()['id'], 'Added item', 'yourmodule', 'add', $id);
return Router::get_code(201);
}
}INSERT INTO controllers (name, title, type, access, display, status, lang_code)
VALUES ('yourmodule', 'Ваш модуль', 1, '[1,2]', 1, 1, 'ru');Оптимизация и производительность
- Файловый кэш:
Db::connect('t')->cache(3600)->getAll() - Статика:
Cache-Controlв.htaccess(30 дней для изображений, 7 дней для CSS/JS) - Запросы: выбирайте только нужные поля, используйте
LIMIT, кэшируйте тяжёлые выборки
Профилирование
echo Db::connect()->queryCount();
echo Db::connect()->getQuery();
Логирование и отладка
Log::set($user_id, 'Added article', 'articles', 'add', $item_id);
Log::createError('Описание ошибки');
Log::createWarning('Предупреждение');
Log::createSuccess('Успешное действие');
Файлы логов хранятся в /upload/errors/ и /logs/errors/. Обработчик исключений в config.php выводит детали только для доверенных IP.
Миграция и обновление
- Резервная копия:
tar -czf backup_$(date +%Y%m%d).tar.gz /var/www/your-site/ - Обновление ядра:
rsync -av --exclude='application/' --exclude='upload/' new/ old/ - Проверка совместимости конфигов, тестирование на стейджинге
Клиенты и партнеры


Популярные вопросы
Jumpstarter — это легковесный PHP-фреймворк для создания веб-приложений и интернет-магазинов. Его ключевые особенности: нулевые зависимости по умолчанию (не требует composer install), промышленный уровень безопасности «из коробки» (CSP, CSRF, HSTS, CORS), прозрачный код без «магии» и скрытых абстракций, а также линейная масштабируемость — от лендинга до маркетплейса. Фреймворк работает на любом хостинге с поддержкой PHP 7.4+ и PDO.
Jumpstarter подходит для:
- Фрилансеров — быстрый старт проектов, лёгкая передача кода заказчику;
- Стартапов — низкие затраты на инфраструктуру, масштабируемость по мере роста;
- Корпораций — полный аудит кода, интеграция с внутренними системами;
- Госпроектов — соответствие требованиям по безопасности и импортозамещению;
- Образовательных проектов — прозрачная архитектура идеальна для обучения.
В основе фреймворка:
- PHP 7.4+ (протестировано на 8.4, совместимо с 8.5);
- PDO — единый интерфейс для работы с БД;
- MVC-паттерн — чёткое разделение логики, данных и представления;
- Нативный PHP — без сложных контейнеров и рефлексии;
- Опционально: Composer — можно подключить сторонние пакеты при необходимости, но ядро работает без них.
Ключевые возможности:
- Fluent DB-слой (DBN) — читаемый цепочечный синтаксис для запросов;
- Файловое кэширование — не требует Redis/Memcached для старта;
- Мульти-шаблонность — один проект → три интерфейса (публичный, кабинет, админка);
- Встроенная безопасность — CSP с nonce, CSRF-токены, WAF-правила, rate-limiting;
- Система расширений — модули для 1C, платежей, Telegram, Yandex и др.;
- i18n из коробки — JSON-локализация с авто-добавлением недостающих ключей;
- Утилиты — форматирование дат/денег/телефонов, геокодер, загрузка файлов, генерация UUID/SRI.
Быстрый старт за 4 шага:
- Скопируйте файлы фреймворка в корень сайта;
- Настройте
application/config.php(базовый URL, язык по умолчанию); - Отредактируйте
application/data/db.json(параметры подключения к БД); - Убедитесь, что директории
upload/,application/data/доступны для записи.
composer install и миграций.Нет. При самостоятельном хостинге регистрация не требуется — вы скачиваете фреймворк и разворачиваете его на своём сервере. Если вы используете коммерческую лицензию или облачный сервис на базе Jumpstarter, условия доступа определяются соответствующим договором.
Jumpstarter распространяется под проприетарной / коммерческой лицензией. Базовая версия доступна для оценки и разработки. Для получения актуальной информации о тарифах, условиях лицензирования и корпоративных предложениях обратитесь по адресу support@devstarter.ru или посетите официальный сайт.
Ресурсы для разработчиков:
- Техническая документация — полная спецификация ядра, API, примеры кода;
- GitBook — интерактивное руководство с поиском и навигацией;
- GitHub — исходный код, баг-трекер, обсуждения;
- Официальный сайт — новости, кейсы, контакты;
- Почта поддержки — support@devstarter.ru.
Да. Доступны:
- Техподдержка — консультации по установке, настройке и отладке;
- Документация — пошаговые гайды, API-референс, чеклисты безопасности;
- Примеры кода — готовые модули (статьи, товары, заказы) для изучения архитектуры;
- Индивидуальное обучение — для корпоративных клиентов (по запросу).
Да, через систему расширений. В комплекте уже есть модули для:
- Платёжных систем (Альфа-Банк, Тинькофф);
- Сервисов уведомлений (Telegram, SMS Aero, SendPulse, Unisender);
- Гео-сервисов (DaData, Яндекс.Карты);
- Аналитики (Яндекс.Метрика, Uptime);
- Учётных систем (1C);
- Социальных сетей (VK, Yandex).
application/extensions/ и реализовать логику в snippets/*.php.Да, полностью. Поскольку весь код написан на чистом PHP без скрытых абстракций, вы можете:
- Модифицировать ядро под специфические задачи;
- Создавать собственные контроллеры, модели и шаблоны;
- Добавлять расширения без изменения базовой архитектуры;
- Настраивать маршрутизацию, права доступа, локализацию;
- Подключать сторонние Composer-пакеты при необходимости.
Технических ограничений нет. Производительность зависит от конфигурации сервера, а не от фреймворка:
- Jumpstarter успешно работает на минимальных конфигурациях (Raspberry Pi, shared hosting);
- В тестах обрабатывал 1 000 000+ посетителей/день без балансировщиков и Redis;
- Файловое кэширование БД и оптимизированный роутинг обеспечивают низкий оверхед;
- Мульти-шаблонность позволяет запускать несколько интерфейсов в одном проекте.
Задайте вопрос или запросите демо
Оставьте свои контактные данные, и наши специалисты свяжутся с вами в ближайшее время