开源原型设计工具Penpot

Penpot是一个现代化、开源的协同设计平台,专为跨职能团队打造,提供了强大的在线设计和原型制作功能。

以下是对Penpot的详细介绍:

一、平台特点

  1. 开源与免费:Penpot是一个完全免费且开放源代码的项目,允许社区贡献和定制,用户还可以选择将其部署到自己的服务器上,确保数据的安全与自主控制。
  2. 跨平台与兼容性:Penpot基于Web技术构建,不依赖于特定的操作系统,可在任何现代浏览器上流畅运行,支持Windows、macOS和Linux等操作系统。此外,它还选择了SVG作为核心文件格式,保证了设计作品的高质量输出与可编辑性,并促进了与其他矢量编辑工具的兼容性。
  3. 多用户协作:支持多用户实时查看和编辑项目,团队成员可以共同创建、分享和迭代设计项目,提高工作效率并简化工作流程。

二、核心功能

  1. 设计工具集:内置矢量绘图工具,支持形状、文本、图像操作,以及自定义颜色和样式,满足设计师的各种需求。
  2. 原型设计:允许用户创建交互式原型,设置页面间跳转,预览并分享给团队或客户,以便更好地测试和验证设计想法。
  3. 资产库:管理重复使用的元素,如图标、照片和图形,保持设计的一致性,并提升团队协作的效率。
  4. 版本控制:跟踪项目的每个更改,并允许用户轻松回滚到以前的状态,确保设计项目的稳定性和可追溯性。
  5. 权限管理:提供精细的权限控制功能,允许管理员设置团队成员的角色和访问级别,保护敏感信息。

三、技术优势

  1. 技术栈:Penpot采用了React、Puppeteer、Node.js和MongoDB等现代技术栈,确保了平台的性能和稳定性。同时,它还提供了GraphQL API,方便与其他工具和服务集成。
  2. 微服务架构:遵循微服务架构原则,使各个组件能够独立开发和扩展,保证了系统的可维护性和伸缩性。
  3. 隐私与安全:所有数据都经过加密传输,保护用户的创意不受侵犯。

四、应用场景

Penpot广泛应用于产品设计、UI/UX设计、网站开发等领域。它可以帮助团队实现设计与开发之间的无缝协作,减少沟通成本,提高项目的整体效率和质量。

五、本地部署

1、下载yml文件

https://raw.githubusercontent.com/penpot/penpot/main/docker/images/docker-compose.yaml

version: "3.8"
networks:
  penpot:
volumes:
  penpot_postgres_v15:
  penpot_assets:
services:
  penpot-frontend:
    image: "penpotapp/frontend:latest"
    restart: always
    ports:
      - 9001:80
    volumes:
      - penpot_assets:/opt/data/assets
    depends_on:
      - penpot-backend
      - penpot-exporter
    networks:
      - penpot
    labels:
      - "traefik.enable=true"
    environment:
      - PENPOT_FLAGS=enable-registration enable-login-with-password

  penpot-backend:
    image: "penpotapp/backend:latest"
    restart: always

    volumes:
      - penpot_assets:/opt/data/assets
    depends_on:
      - penpot-postgres
      - penpot-redis
    networks:
      - penpot
    environment:
      - PENPOT_FLAGS=enable-registration enable-login-with-password disable-email-verification enable-smtp enable-prepl-server
      # - PENPOT_PREPL_HOST=0.0.0.0
      - PENPOT_PUBLIC_URI=http://localhost:9001
      - PENPOT_DATABASE_URI=postgresql://penpot-postgres/penpot
      - PENPOT_DATABASE_USERNAME=penpot
      - PENPOT_DATABASE_PASSWORD=penpot
      - PENPOT_REDIS_URI=redis://penpot-redis/0
      - PENPOT_ASSETS_STORAGE_BACKEND=assets-fs
      - PENPOT_STORAGE_ASSETS_FS_DIRECTORY=/opt/data/assets
      - PENPOT_TELEMETRY_ENABLED=true
      - PENPOT_SMTP_DEFAULT_FROM=no-reply@example.com
      - PENPOT_SMTP_DEFAULT_REPLY_TO=no-reply@example.com
      - PENPOT_SMTP_HOST=penpot-mailcatch
      - PENPOT_SMTP_PORT=1025
      - PENPOT_SMTP_USERNAME=
      - PENPOT_SMTP_PASSWORD=
      - PENPOT_SMTP_TLS=false
      - PENPOT_SMTP_SSL=false
  penpot-exporter:
    image: "penpotapp/exporter:latest"
    restart: always
    networks:
      - penpot

    environment:
      # Don't touch it; this uses internal docker network to
      # communicate with the frontend.
      - PENPOT_PUBLIC_URI=http://penpot-frontend

      ## Redis is used for the websockets notifications.
      - PENPOT_REDIS_URI=redis://penpot-redis/0

  penpot-postgres:
    image: "postgres:15"
    restart: always
    stop_signal: SIGINT
    volumes:
      - penpot_postgres_v15:/var/lib/postgresql/data
    networks:
      - penpot
    environment:
      - POSTGRES_INITDB_ARGS=--data-checksums
      - POSTGRES_DB=penpot
      - POSTGRES_USER=penpot
      - POSTGRES_PASSWORD=penpot
  penpot-redis:
    image: redis:7
    restart: always
    networks:
      - penpot

  penpot-mailcatch:
    image: sj26/mailcatcher:latest
    restart: always
    expose:
      - '1025'
    ports:
      - "1080:1080"
    networks:
      - penpot

 打开终端或命令提示符,切换到包含docker-compose.yaml文件的目录,然后运行以下命令来启动Penpot服务:

docker-compose -p penpot -f docker-compose.yaml up -d
  • 在浏览器中输入http://localhost:9001(或者你在docker-compose.yaml文件中设置的端口号),即可访问Penpot的Web界面。

 

六、社区与生态

Penpot拥有一个活跃的开源社区,用户可以在其中分享经验、交流心得,并参与到平台的开发和改进中来。此外,Penpot还提供了丰富的文档和教程资源,帮助用户快速上手并充分利用平台的功能。

综上所述,Penpot是一个功能强大、易于集成且注重隐私安全的开源协同设计平台。它为跨职能团队提供了高效的在线设计和原型制作解决方案,有助于提升团队协作效率并推动项目的成功实施。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/871325.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

20:【stm32】定时器一:时基单元

时基单元 1、什么是定时器2、时基单元的基本结构2.1:脉冲的来源2.2:预分频器PSC2.3:计数器CNT2.4:update事件与预加载 3、标准库编程3.1:通过定时器中断来设置延迟函数 1、什么是定时器 定时器是一种专门负责定时功能…

45.【C语言】指针(重难点)(H)

目录: 22.函数指针变量 *创建 *使用 *两段代码分析 23.函数指针数组 *基本用法 *作用 往期推荐 22.函数指针变量 *创建 类比数组指针变量的定义:存放数组地址的指针变量,同理函数指针变量存放函数的地址 格式 函数的返回类型 (*指针变量的…

产品帮助中心如何搭建?五步让客户满意度提升100%

一、引言 创建帮助文章的好处是节省了招募大量客户联系代理的昂贵成本。它们现在通过解决客户的早期问题而无需支持干预,并为自助提供逐步指导,从而取代了支持代理。 当您创建帮助文章时,您会构建知识库并为将来保留它。这些帮助文章充当新…

作业帮 TiDB 7.5.x 使用经验

作者: 是我的海 原文来源: https://tidb.net/blog/5f9784d3 近期在使用 TiDB 时遇到的一些小问题的梳理总结,大部分版本都在6.5.6和7.5.2 1、limit 导致的扫描量过大的优化 研发定时任务每天需要扫描大量数据,到时机器网卡被…

开放式耳机好还是入耳式耳机好?2024五款热销开放式耳机推荐!

开放式耳机与入耳式耳机各有优缺点,适合不同的使用场景和用户需求。 开放式耳机的优点主要包括: 1. 佩戴舒适性好,由于设计宽松,不会给耳朵带来压迫感,适合长时间使用 。 2. 透气性能好,尤其在夏天或运动…

《江南:在爱开始的地方等你》将上映 赖雨濛刘冬沁演绎刻骨之恋

在等到你之前,我们的故事一直未完待续。 用这句话来诠释电影《江南:在爱开始的地方等你》最为精准不过,该片改编自康锐原创小说《月落姑苏》,由康锐导演、编剧,赖雨濛、刘冬沁领衔主演、朱丹妮、王沛为、金巧巧、阎青…

Linux/Windows下线程间通信机制及其API总结

线程间通信(Thread Inter-Communication, TIC)是指在一个进程内的多个线程之间进行数据交换和同步的方法。与进程间通信相比,线程间通信通常更简单、更高效,因为它们共享相同的内存空间。下面是一些常见的线程间通信机制及其相关A…

vue-element-admin解决三级目录的KeepAlive缓存问题(详情版)

vue-element-admin解决三级目录的KeepAlive缓存问题(详情版) 本文章将从问题出现的角度看看KeepAlive的缓存问题,然后提出两种解决方法。本文章比较详细,如果只是看怎么解决,代码怎么改,请前往配置版。 一…

【原创教程】电气电工07:网线的制作方法

电气电工经常会遇到做网线,我们做网线需要网线钳与测试仪。需要了解网线的两种接线标准。 我们来看一下网线钳的操作步骤: 这种压线钳也同时具有剥线、剪线功能。 用这种网线钳能制作RJ45网络线接头。RJ11电话线接头、4P电话线接头。适用于RJ45,RJ11型网线 做网线的时候我…

Temu全托管和半托管的区别:一文说清temu全托和半托的差异

TEMU在今年3月再出王炸,上线半托管模式。这是TEMU继全托管模式爆火跨境圈之后的又一个大动作。那么,TEMU全托管和TEMU半托管有哪些不同?卖家朋友应该如何选择呢?今天给大家详细拆解一下。 TEMU全托管和半托管有什么区别 首先是定…

汇编语言lea指令取数组偏移地址

最近看到一条指令,x86汇编, LEA BX, 6[DI] 根据资料,它的含义是,某数组含20个元素,每个元素占一个字节,序号为0~19。设DI指向数组开头处,把序号为6的元素的偏移地址送到BX中; lea指令…

如何进行长截图的两种方法

前言 本文主要讲2种截图方式,分别是谷歌和QQ。 谷歌分为Web端 和 移动端,选一种即可。 第一种:谷歌浏览器控制台自带的 1.先把控制台语言更改为中文,方便查看 ①.按F12,点击设置面板 ②.修改语言为中文并关闭 ③.点击…

BFS解决单源最短路问题

目录 迷宫中离入口最近的出口 最小基因变化 单词接龙 为高尔夫比赛砍树 迷宫中离入口最近的出口 题目 思路 使用宽度优先遍历解决这道题,需要一个二维数组标记是否被遍历过,也需要一个队列辅助完成宽度优先遍历,类似于水波纹一样&#x…

java接口 controller层接收list集合传参,postman 调用接口时required parameter XXX is not present

开发过程中开发一个java接口 controller层接收list集合传参,然后postman调用一直不成功,报错 使用RequestParam方式,如果postman 调用接口时报错required parameter XXX is not present 可能是(value“items”)跟你输…

线索获取:多渠道获客策略解析

在当今商业环境中,企业面临着激烈的市场竞争和不断变化的客户需求。在此背景下,销售线索作为销售活动的基础和起点,重要性更加凸显,尤其是在营销精耕的当下,做好线索的精细化管理成为企业获取竞争优势的关键环节之一。…

数据结构----队列

1 什么是队列? 只允许在两端进行插入和删除操作的线性表,在队尾插入,在队头删除 插入的一端,被称为"队尾",删除的一端被称为"队头" 在队列操作过程中,为了提高效率&#xff0…

《重生到现代之从零开始的C语言生活》—— 指针3

数组名的理解 在我们使用&arr[0]的方式拿到了数组第一个元素的地址,但是其实,数组名本来就地址,而且是数组首元素的地址 所以数组名就是数组首元素的地址 但是会有两个例外 sizeof(数组名),sizeof中单独放数组名&#xff0c…

[Linux] 查看系统资源 (持续更新中)

概述 在Linux中,有许多命令和工具可用于查看系统的资源使用情况。以下是一些常用的方式: top:top命令是最常见的实时系统监视工具之一。它显示了当前运行的进程列表,以及每个进程的CPU、内存使用情况、nice值等信息。top命令还会…

帆软报表,达梦数据库驱动上传失败

1、按照正常操作新建数据库连接,上传准备好的达梦驱动时,提示如图一需要修改SystemConfig.driverUpload为true才可以。 2、FineDB存储了数据决策系统中除平台属性配置以外的所有信息。详情请参见: FineDB 数据库简介。 3、因此管理员可通过…

Kubectl基础命令使用

一.Kubectl 基础命令 格式: kubectl [command] [TYPE] [NAME] [FLAGS] kubectl 是 Kubernetes 的命令行工具,用于管理 Kubernetes 集群。以下是一些常用的 kubectl 命令及其选项: 常用命令 获取资源 列出所有资源类型(Pods、De…