All Projects → bytedance → Unpub

bytedance / Unpub

Licence: mit
Self-hosted private Dart Pub server for Enterprise

Programming Languages

dart
5743 projects

Projects that are alternatives of or similar to Unpub

Hrcloud2
A full-featured home hosted Cloud Drive, Personal Assistant, App Launcher, File Converter, Streamer, Share Tool & More!
Stars: ✭ 134 (-28.34%)
Mutual labels:  self-hosted, enterprise
WorkGroup
Self-Hosted private Social Media-Intranet for Companies.
Stars: ✭ 21 (-88.77%)
Mutual labels:  enterprise, self-hosted
Ownhealthrecord
This repository is about the OwnHealthRecord Application Web App
Stars: ✭ 162 (-13.37%)
Mutual labels:  self-hosted
Changedetection.io
changedetection.io - The best and simplest self-hosted website change detection monitoring service. An alternative to Visualping, Watchtower etc. Designed for simplicity - the main goal is to simply monitor which websites had a text change. Open source web page change detection.
Stars: ✭ 180 (-3.74%)
Mutual labels:  self-hosted
Mininote
📔 A simple Markdown note-taking editor
Stars: ✭ 171 (-8.56%)
Mutual labels:  self-hosted
Grocy Docker
ERP beyond your fridge - now containerized - this is the docker repo of https://github.com/grocy/grocy
Stars: ✭ 164 (-12.3%)
Mutual labels:  self-hosted
Appsmith
Low code project to build admin panels, internal tools, and dashboards. Integrates with 15+ databases and any API.
Stars: ✭ 12,079 (+6359.36%)
Mutual labels:  self-hosted
Barcodebuddy
Barcode system for Grocy
Stars: ✭ 159 (-14.97%)
Mutual labels:  self-hosted
Slic Starter
A complete, serverless starter project
Stars: ✭ 184 (-1.6%)
Mutual labels:  enterprise
Rebuild
Building your business-systems freely! 高度可定制化的企业管理系统 企业中台
Stars: ✭ 169 (-9.63%)
Mutual labels:  enterprise
Katlas
A distributed graph-based platform to automatically collect, discover, explore and relate multi-cluster Kubernetes resources and metadata.
Stars: ✭ 179 (-4.28%)
Mutual labels:  enterprise
Viennanet
Framework for quickly creating enterprise microservices on .NET Core https://habr.com/ru/company/raiffeisenbank/blog/516540/
Stars: ✭ 170 (-9.09%)
Mutual labels:  enterprise
Hastic Grafana App
Hastic data management server for labeling patterns and anomalies in Grafana
Stars: ✭ 166 (-11.23%)
Mutual labels:  self-hosted
Anylink
AnyLink是一个企业级远程办公 ssl vpn 软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端。
Stars: ✭ 177 (-5.35%)
Mutual labels:  enterprise
Rapidbay
Self-hosted torrent video streaming service compatible with Chromecast and AppleTV deployable in the cloud
Stars: ✭ 163 (-12.83%)
Mutual labels:  self-hosted
Seleniumbase
A Python framework that inspires developers to become better test automation engineers. 🧠💡
Stars: ✭ 2,520 (+1247.59%)
Mutual labels:  self-hosted
Leed
Leed (contraction de Light Feed) est un agrégateur RSS libre et minimaliste qui permet la consultation de flux RSS de manière rapide et non intrusive.
Stars: ✭ 160 (-14.44%)
Mutual labels:  self-hosted
Selfoss
multipurpose rss reader, live stream, mashup, aggregation web application
Stars: ✭ 2,070 (+1006.95%)
Mutual labels:  self-hosted
Choerodon
Open Source Multi-Cloud Integrated Platform
Stars: ✭ 2,149 (+1049.2%)
Mutual labels:  enterprise
N8n
Free and open fair-code licensed node based Workflow Automation Tool. Easily automate tasks across different services.
Stars: ✭ 19,252 (+10195.19%)
Mutual labels:  self-hosted

Unpub

pub test

Unpub is a self-hosted private Dart Pub server for Enterprise, with a simple web interface to search and view packages information.

Screenshots

Screenshot

Usage via command line

pub global activate unpub
unpub --database mongodb://localhost:27017/dart_pub # Replace this with production database uri

Unpub use mongodb as meta information store and file system as package(tarball) store by default.

Dart API is also available for further customization.

Usage via Dart API

Example

import 'package:unpub/unpub.dart' as unpub;

main(List<String> args) async {
  var basedir = '/path/to/basedir'; // Base directory to save pacakges
  var db = 'mongodb://localhost:27017/dart_pub'; // MongoDB uri

  var metaStore = unpub.MongoStore(db);
  await metaStore.db.open();

  var packageStore = unpub.FileStore(basedir);

  var app = unpub.App(
    metaStore: metaStore,
    packageStore: packageStore,
  );

  var server = await app.serve('0.0.0.0', 4000);
  print('Serving at http://${server.address.host}:${server.port}');
}

Options

Option Description Default
metaStore (Required) Meta information store -
packageStore (Required) Package(tarball) store -
upstream Upstream url https://pub.dev
googleapisProxy Http(s) proxy to call googleapis (to get uploader email) -
overrideUploaderEmail If specified, unpub will use this email as uploader instead of requesting googleapis -
uploadValidator See Package validator -

Package validator

Naming conflicts is a common issue for private registry. A reasonable solution is to add prefix to reduce conflict probability.

With uploadValidator you could check if uploaded package is valid.

var app = unpub.App(
  // ...
  uploadValidator: (Map<String, dynamic> pubspec, String uploaderEmail) {
    // Only allow packages with some specified prefixes to be uploaded
    var prefix = 'my_awesome_prefix_';
    var name = pubspec['name'] as String;
    if (!name.startsWith(prefix)) {
      throw 'Package name should starts with $prefix';
    }

    // Also, you can check if uploader email is valid
    if (!uploaderEmail.endsWith('@your-company.com')) {
      throw 'Uploader email invalid';
    }
  }
);

Customize meta and package store

Unpub is designed to be extensible. It is quite easy to customize your own meta store and package store.

import 'package:unpub/unpub.dart' as unpub;

class MyAwesomeMetaStore extends unpub.MetaStore {
  // Implement methods of MetaStore abstract class
  // ...
}

class MyAwesomePackageStore extends unpub.PackageStore {
  // Implement methods of PackageStore abstract class
  // ...
}

// Then use it
var app = unpub.App(
  metaStore: MyAwesomeMetaStore(),
  packageStore: MyAwesomePackageStore(),
)

Badges

URL Badge
/badge/v/{package_name} badge example badge example
/badge/d/{package_name} badge example

Alternatives

  • pub-dev: Source code of pub.dev, which should be deployed at Google Cloud Platform.
  • pub_server: An alpha version of pub server provided by Dart team.

Credits

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].