{"id":60,"date":"2026-10-14T21:52:36","date_gmt":"2026-10-14T19:52:36","guid":{"rendered":"https:\/\/wojciechowski.tech\/?page_id=60"},"modified":"2026-10-14T22:15:28","modified_gmt":"2026-10-14T20:15:28","slug":"aplikacja-do-zarzadzania-budowami","status":"publish","type":"page","link":"https:\/\/wojciechowski.tech\/index.php\/aplikacja-do-zarzadzania-budowami\/","title":{"rendered":"Budowy: aplikacja do zarz\u0105dzania zadaniami na budowach"},"content":{"rendered":"\n<style>\n@font-face{font-family:\"Chakra Petch\";font-style:normal;font-weight:600;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/chakra-petch-latin-ext-600-normal.woff2) format(\"woff2\");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}\n@font-face{font-family:\"Chakra Petch\";font-style:normal;font-weight:600;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/chakra-petch-latin-600-normal.woff2) format(\"woff2\");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\n@font-face{font-family:\"Chakra Petch\";font-style:normal;font-weight:700;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/chakra-petch-latin-ext-700-normal.woff2) format(\"woff2\");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}\n@font-face{font-family:\"Chakra Petch\";font-style:normal;font-weight:700;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/chakra-petch-latin-700-normal.woff2) format(\"woff2\");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\n@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:400;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-sans-latin-ext-400-normal.woff2) format(\"woff2\");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}\n@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:400;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-sans-latin-400-normal.woff2) format(\"woff2\");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\n@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:600;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-sans-latin-ext-600-normal.woff2) format(\"woff2\");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}\n@font-face{font-family:\"IBM Plex Sans\";font-style:normal;font-weight:600;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-sans-latin-600-normal.woff2) format(\"woff2\");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\n@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:400;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-mono-latin-ext-400-normal.woff2) format(\"woff2\");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}\n@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:400;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-mono-latin-400-normal.woff2) format(\"woff2\");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\n@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:600;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-mono-latin-ext-600-normal.woff2) format(\"woff2\");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}\n@font-face{font-family:\"IBM Plex Mono\";font-style:normal;font-weight:600;font-display:swap;src:url(\/wp-content\/uploads\/fonts\/ibm-plex-mono-latin-600-normal.woff2) format(\"woff2\");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}\n#mw-top{--bg:#0a0e14;--bg-2:#0e141c;--card:#121a24;--line:#1f2b39;--text:#e7edf4;--muted:#93a1b3;--accent:#3dd9bf;--accent-ink:#03130f;--radius:14px;--head:\"Chakra Petch\",\"Segoe UI\",system-ui,sans-serif;--mono:\"IBM Plex Mono\",ui-monospace,Consolas,monospace;background:var(--bg);color:var(--text);font:16px\/1.65 \"IBM Plex Sans\",\"Segoe UI\",system-ui,sans-serif;-webkit-font-smoothing:antialiased;position:relative;overflow:hidden}\n#mw-top *,#mw-top *::before,#mw-top *::after{box-sizing:border-box}\n#mw-top h1,#mw-top h2,#mw-top h3,#mw-top h4,#mw-top p,#mw-top ul,#mw-top ol,#mw-top figure{margin:0}\n#mw-top h1,#mw-top h2,#mw-top h3,#mw-top h4{font-family:var(--head);color:var(--text);text-transform:none;text-shadow:none;letter-spacing:0;line-height:1.2}\n#mw-top ul,#mw-top ol{padding:0;list-style:none}\n#mw-top li{margin:0;padding:0}\n#mw-top a{color:inherit;text-decoration:none;border-bottom:0;box-shadow:none;text-transform:none;letter-spacing:normal}\n#mw-top p,#mw-top li{font-size:inherit;line-height:inherit;font-family:inherit;letter-spacing:inherit;text-transform:none}\n#mw-top .mono{font-family:var(--mono)}\n#mw-top .muted{color:var(--muted)}\n#mw-top .wrap{max-width:1120px;margin:0 auto;padding:0 24px}\n#mw-top section[id]{scroll-margin-top:84px}\n#mw-top a:focus-visible,#mw-top summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}\n#mw-top .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 20px;border-radius:10px;font-family:var(--head);font-weight:600;font-size:15px;line-height:1.2;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}\n#mw-top .btn-primary{background:var(--accent);color:var(--accent-ink)}\n#mw-top .btn-primary:hover{background:#63e8d2}\n#mw-top .btn-ghost{border-color:var(--line);color:var(--text);background:rgba(255,255,255,.02)}\n#mw-top .btn-ghost:hover{border-color:var(--accent);color:var(--accent)}\n#mw-top .btn svg{width:18px;height:18px;flex:none}\n#mw-top svg.i{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}\n#mw-top .nav{position:sticky;top:0;z-index:20;background:rgba(10,14,20,.88);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}\n#mw-top .nav .wrap{display:flex;align-items:center;gap:28px;height:64px}\n#mw-top .brand{display:flex;align-items:center;gap:10px;font-family:var(--head);font-weight:700;white-space:nowrap}\n#mw-top .brand .mark{width:30px;height:30px;border-radius:8px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font:700 13px var(--mono)}\n#mw-top .nav-links{display:flex;gap:24px;margin-left:auto;font-size:14.5px}\n#mw-top .nav-links a{color:var(--muted)}\n#mw-top .nav-links a:hover{color:var(--text)}\n#mw-top .nav .btn{padding:9px 16px;font-size:14px}\n#mw-top .hero{position:relative;padding:84px 0 76px}\n#mw-top .hero::before{content:\"\";position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:52px 52px;opacity:.45;-webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 0,#000 10%,transparent 75%);mask-image:radial-gradient(ellipse 80% 70% at 50% 0,#000 10%,transparent 75%);pointer-events:none}\n#mw-top .hero .wrap{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}\n#mw-top .crumb{display:inline-block;margin-bottom:18px;font-size:13px;color:var(--muted)}\n#mw-top .crumb:hover{color:var(--accent)}\n#mw-top .eyebrow{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:18px}\n#mw-top h1{font-size:clamp(2rem,4.6vw,3.2rem);line-height:1.12;font-weight:700}\n#mw-top h1 .accent{color:var(--accent)}\n#mw-top .lead{margin-top:22px;font-size:1.1rem;color:var(--muted);max-width:36em}\n#mw-top .cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}\n#mw-top .ticks4{margin-top:30px;display:grid;grid-template-columns:1fr 1fr;gap:12px 24px}\n#mw-top .ticks4 li{display:flex;gap:10px;align-items:flex-start;font-size:.95rem;font-weight:500}\n#mw-top .ticks4 svg{flex:none;width:20px;height:20px;margin-top:2px;color:var(--accent)}\n#mw-top .sec{padding:84px 0}\n#mw-top .sec-alt{background:var(--bg-2);border-block:1px solid var(--line)}\n#mw-top .center{text-align:center}\n#mw-top .sec-head{max-width:660px;margin-bottom:44px}\n#mw-top .sec-head.center{margin-left:auto;margin-right:auto}\n#mw-top .kicker{font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}\n#mw-top h2{font-size:clamp(1.6rem,3.2vw,2.35rem);font-weight:700}\n#mw-top h3{font-size:1.12rem;line-height:1.3;font-weight:700}\n#mw-top .sec-head p{margin-top:14px;color:var(--muted)}\n#mw-top .card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:26px;transition:border-color .2s}\n#mw-top .card:hover{border-color:rgba(61,217,191,.4)}\n#mw-top .card p{margin-top:10px;color:var(--muted);font-size:.96rem}\n#mw-top .ico{width:44px;height:44px;border-radius:11px;background:rgba(61,217,191,.1);color:var(--accent);display:grid;place-items:center;margin-bottom:16px}\n#mw-top .ico svg{width:22px;height:22px}\n#mw-top .cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}\n#mw-top .pain .card{border-left:3px solid var(--accent)}\n#mw-top .bridge{margin-top:36px;text-align:center;font:600 1.2rem\/1.4 var(--head)}\n#mw-top .bridge span{color:var(--accent)}\n#mw-top .steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:s}\n#mw-top .steps li{counter-increment:s;padding:24px 22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}\n#mw-top .steps li::before{content:\"0\" counter(s);display:block;font:700 13px var(--mono);color:var(--accent);margin-bottom:12px}\n#mw-top .steps p{margin-top:8px;color:var(--muted);font-size:.95rem}\n#mw-top .feat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}\n#mw-top .row{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}\n#mw-top .row+.row{margin-top:80px}\n#mw-top .row.rev .row-media{order:-1}\n#mw-top .row h2{font-size:clamp(1.5rem,2.8vw,2rem)}\n#mw-top .row .lead{margin-top:16px}\n#mw-top .checks{margin-top:22px;display:grid;gap:12px}\n#mw-top .checks li{display:flex;gap:12px}\n#mw-top .checks svg{flex:none;width:20px;height:20px;margin-top:3px;color:var(--accent)}\n#mw-top .checks b{font-weight:600}\n#mw-top .phones{display:flex;gap:16px;align-items:flex-start;justify-content:center}\n#mw-top .phones > *{flex:1 1 0;min-width:0;max-width:250px}\n#mw-top .phones > *:first-child{margin-top:40px}\n#mw-top .app{background:#f3f6fb;color:#0f172a;border-radius:12px;padding:14px;font:12px\/1.45 \"Segoe UI\",system-ui,Arial,sans-serif;box-shadow:0 14px 40px -18px rgba(0,0,0,.8);text-align:left}\n#mw-top .cap{display:block;margin-top:12px;text-align:center;font:11.5px var(--mono);color:var(--muted);letter-spacing:.04em}\n#mw-top .a-top{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13px}\n#mw-top .a-logo{width:20px;height:20px;border-radius:6px;background:#ea580c;color:#fff;display:grid;place-items:center;font-weight:700;font-size:11px}\n#mw-top .a-h{font-size:17px;font-weight:700}\n#mw-top .a-sub{color:#64748b;margin:2px 0 10px}\n#mw-top .kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(74px,1fr));gap:6px}\n#mw-top .k{border:1px solid;border-radius:8px;padding:6px 8px;font-weight:600;font-size:11px}\n#mw-top .k b{display:block;font-size:17px;line-height:1.2}\n#mw-top .k.red{background:#fff0f0;border-color:#fecaca;color:#b91c1c}\n#mw-top .k.amb{background:#fffbeb;border-color:#fde68a;color:#92400e}\n#mw-top .k.blu{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}\n#mw-top .k.wht{background:#fff;border-color:#e2e8f0;color:#334155}\n#mw-top .k.grn{background:#ecfdf5;border-color:#a7f3d0;color:#047857}\n#mw-top .a-warn{margin-top:8px;background:#fefce8;border:1px solid #fde68a;border-radius:8px;padding:8px 10px;color:#78350f}\n#mw-top .w-h{font-weight:700;text-transform:uppercase;font-size:10.5px;letter-spacing:.04em;margin-bottom:3px}\n#mw-top .a-warn ul{display:grid;gap:1px}\n#mw-top .a-warn li{padding-left:12px;position:relative;font-size:11.5px}\n#mw-top .a-warn li::before{content:\"\u2022\";position:absolute;left:2px}\n#mw-top .a-lab{margin:10px 0 5px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b}\n#mw-top .a-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px}\n#mw-top .t{background:#fff;border-radius:8px;border-left:3px solid #8b5cf6;padding:8px 10px;box-shadow:0 1px 3px rgba(15,23,42,.12);display:grid;gap:1px}\n#mw-top .t b{font-size:12px}\n#mw-top .t span{color:#64748b;font-size:10.5px}\n#mw-top .t i{justify-self:start;margin-top:4px;font-style:normal;font-size:10px;font-weight:600;color:#6d28d9;background:#f3e8ff;border-radius:999px;padding:1px 8px}\n#mw-top .hero-visual{position:relative;padding-bottom:34px}\n#mw-top .hero-visual .phone{position:absolute;right:-6px;bottom:0;width:32%;min-width:140px;max-width:186px}\n#mw-top .phone{background:#0f172a;border-radius:24px;padding:6px;box-shadow:0 18px 44px -16px rgba(0,0,0,.9);border:1px solid #243247}\n#mw-top .scr{background:#f3f6fb;color:#0f172a;border-radius:18px;overflow:hidden;font:9.5px\/1.35 \"Segoe UI\",system-ui,Arial,sans-serif;padding:8px;text-align:left}\n#mw-top .scr.big{font-size:11.5px;padding:10px}\n#mw-top .p-top{display:flex;align-items:center;gap:5px;margin-bottom:7px;font-size:10.5px}\n#mw-top .p-logo{width:15px;height:15px;border-radius:4px;background:#ea580c;color:#fff;display:grid;place-items:center;font-weight:700;font-size:8px}\n#mw-top .p-sp{flex:1}\n#mw-top .p-bell{background:#ea580c;color:#fff;border-radius:999px;padding:0 4px;font-size:8px;font-weight:700}\n#mw-top .p-h{font-size:13px;font-weight:700}\n#mw-top .p-sub{color:#64748b;margin:1px 0 6px;font-size:9px}\n#mw-top .p-row{display:flex;justify-content:space-between;align-items:center;border:1px solid;border-radius:6px;padding:4px 7px;margin-top:3px;font-weight:600}\n#mw-top .p-row i{font-style:normal;background:rgba(255,255,255,.8);border-radius:4px;padding:0 5px;font-weight:700}\n#mw-top .p-row.red{background:#fff0f0;border-color:#fecaca;color:#b91c1c}\n#mw-top .p-row.amb{background:#fffbeb;border-color:#fde68a;color:#92400e}\n#mw-top .p-row.blu{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}\n#mw-top .p-row.wht{background:#fff;border-color:#e2e8f0;color:#334155}\n#mw-top .p-row.org{background:#fff7ed;border-color:#fed7aa;color:#c2410c}\n#mw-top .p-lab{margin:7px 0 3px;font-size:8px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#64748b}\n#mw-top .p-task{background:#fff;border-radius:6px;border-left:3px solid #f59e0b;padding:5px 7px;box-shadow:0 1px 2px rgba(15,23,42,.12);display:grid;gap:1px}\n#mw-top .p-task b{font-size:9.5px}\n#mw-top .p-task em{justify-self:start;font-style:normal;background:#e11d1d;color:#fff;border-radius:999px;padding:0 6px;font-size:8px;font-weight:700}\n#mw-top .p-task span{color:#64748b;font-size:8.5px}\n#mw-top .p-nav{display:flex;justify-content:space-around;margin-top:7px;padding-top:5px;border-top:1px solid #e2e8f0;color:#64748b;font-size:8px}\n#mw-top .pcard{background:#fff;border-radius:14px;padding:14px;box-shadow:0 14px 40px -18px rgba(0,0,0,.8);color:#0f172a;font:12px\/1.45 \"Segoe UI\",system-ui,Arial,sans-serif;text-align:left}\n#mw-top .pc-t{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#64748b;margin-bottom:8px;display:flex;justify-content:space-between}\n#mw-top .pc-t b{color:#0f172a;font-size:11px}\n#mw-top .bar{height:6px;border-radius:99px;background:#f1f5f9;overflow:hidden;margin-bottom:8px}\n#mw-top .bar i{display:block;height:100%;width:60%;background:#ea580c}\n#mw-top .ck{display:grid;grid-template-columns:20px 1fr;gap:8px;padding:7px 0;border-top:1px solid #eef2f7}\n#mw-top .ck .bx{width:18px;height:18px;border-radius:5px;border:2px solid #cbd5e1;background:#fff;position:relative}\n#mw-top .ck .bx.on{background:#10b981;border-color:#10b981}\n#mw-top .ck .bx.on::after{content:\"\";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}\n#mw-top .ck .done{text-decoration:line-through;color:#475569}\n#mw-top .ck small{display:block;color:#94a3b8;font-size:10px}\n#mw-top .cm{background:#f8fafc;border-radius:8px;padding:7px 9px;margin-bottom:6px}\n#mw-top .cm small{display:block;font-weight:700;color:#64748b;font-size:10px;margin-bottom:2px}\n#mw-top .mention{background:#fff1e6;color:#c2410c;font-weight:700;border-radius:4px;padding:0 3px}\n#mw-top .ta{border:1px solid #93c5fd;border-radius:8px;padding:7px 9px;height:46px;margin-top:8px;color:#0f172a}\n#mw-top .sug{border:1px solid #e2e8f0;border-radius:8px;padding:6px 9px;margin-top:6px;color:#0f172a}\n#mw-top .sug em{color:#ea580c;font-style:normal;font-weight:700;margin-right:4px}\n#mw-top .btns{display:flex;gap:6px;margin-top:8px}\n#mw-top .btns span{border-radius:8px;padding:7px 9px;font-weight:700;font-size:11px;border:1px solid #cbd5e1;color:#0f172a;background:#fff}\n#mw-top .btns span.dark{background:#0f172a;color:#fff;border-color:#0f172a}\n#mw-top .ct{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #eef2f7}\n#mw-top .ct.f{border-top:0}\n#mw-top .ct strong{display:block;font-size:14px;font-family:inherit}\n#mw-top .ct small{color:#64748b;font-size:11px}\n#mw-top .ct em{background:#ea580c;color:#fff;font-style:normal;font-weight:700;border-radius:8px;padding:8px 14px}\n#mw-top .pdf{background:#fff;color:#0f172a;border-radius:6px;padding:18px 18px 12px;box-shadow:0 14px 40px -18px rgba(0,0,0,.8);font:10px\/1.45 \"Segoe UI\",Arial,sans-serif;max-width:380px;margin:0 auto;aspect-ratio:640\/906;display:flex;flex-direction:column;text-align:left}\n#mw-top .pdf-h{font-size:17px;font-weight:700}\n#mw-top .pdf-s{font-size:12px;font-weight:700;margin:3px 0 6px}\n#mw-top .pdf-m{color:#64748b;font-size:9px;line-height:1.5;padding-bottom:8px;border-bottom:1px solid #e2e8f0}\n#mw-top .pdf-t{font-size:11px;font-weight:700;margin-top:10px}\n#mw-top .pdf-d{color:#64748b;font-size:8.5px}\n#mw-top .pdf-ph{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}\n#mw-top .ph1,#mw-top .ph2{aspect-ratio:4\/3;background:#b4aea8;position:relative;border:1px solid #e2e8f0;overflow:hidden}\n#mw-top .ph1::before{content:\"\";position:absolute;left:0;right:0;top:44%;height:12%;background:#ece8e0}\n#mw-top .ph2::before{content:\"\";position:absolute;left:46%;width:10%;top:0;bottom:12%;background:#ece8e0}\n#mw-top .ph2::after{content:\"\";position:absolute;left:0;right:0;bottom:0;height:14%;background:#8a8480}\n#mw-top .pdf-c{font-size:8px;color:#64748b;margin-top:2px}\n#mw-top .pdf-f{margin-top:auto;display:flex;justify-content:space-between;color:#94a3b8;font-size:8px;padding-top:6px}\n#mw-top .win{border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#f3f6fb;box-shadow:0 24px 60px -24px rgba(0,0,0,.8);max-width:980px;margin:0 auto}\n#mw-top .win-bar{display:flex;gap:6px;padding:10px 14px;background:#e8edf4;border-bottom:1px solid #dbe3ee}\n#mw-top .win-bar i{width:10px;height:10px;border-radius:50%;background:#c3cddb}\n#mw-top .board{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:10px;overflow-x:auto;padding:12px;font:12px\/1.4 \"Segoe UI\",system-ui,Arial,sans-serif;color:#0f172a;text-align:left}\n#mw-top .col-h{font-weight:700;font-size:11.5px;margin:2px 0 6px;color:#334155}\n#mw-top .kc{background:#fff;border-radius:8px;border-left:3px solid #f59e0b;padding:7px 9px;margin-bottom:6px;box-shadow:0 1px 3px rgba(15,23,42,.12);display:grid;gap:2px}\n#mw-top .kc.r{border-left-color:#ef4444}\n#mw-top .kc.b{border-left-color:#3b82f6}\n#mw-top .kc.g{border-left-color:#94a3b8}\n#mw-top .kc b{font-size:11.5px;line-height:1.3}\n#mw-top .kc span{color:#64748b;font-size:10px}\n#mw-top .kc em{font-style:normal;justify-self:start;font-size:10px;font-weight:700;border-radius:99px;padding:1px 7px;background:#fef3c7;color:#92400e}\n#mw-top .kc em.r{background:#fee2e2;color:#b91c1c}\n#mw-top .kc em.b{background:#dbeafe;color:#1d4ed8}\n#mw-top .kc i{font-style:normal;font-size:10px;color:#475569}\n#mw-top .tblw{overflow-x:auto}\n#mw-top .tbl{width:100%;border-collapse:collapse;font-size:11px;min-width:560px;margin:0;border:0;background:transparent}\n#mw-top .tbl th{text-align:left;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:#64748b;padding:6px 8px;border:0;border-bottom:1px solid #e2e8f0;background:transparent}\n#mw-top .tbl td{padding:6px 8px;border:0;border-bottom:1px solid #eef2f7;color:#0f172a;vertical-align:top;background:transparent}\n#mw-top .tbl td:nth-child(n+4){color:#475569}\n#mw-top .app-note{margin-top:8px;color:#64748b;font-size:10px}\n#mw-top .pc-card{background:#fff;border-radius:12px;padding:12px;margin-bottom:8px;box-shadow:0 1px 3px rgba(15,23,42,.12)}\n#mw-top .pc-card p{margin:6px 0 0;color:#0f172a;font-size:11.5px}\n#mw-top .qr{width:130px;height:130px;margin:8px 0;border-radius:6px;background:repeating-conic-gradient(#222 0 25%,#999 0 50%) 0 0\/16px 16px;filter:blur(5px)}\n#mw-top .pc-in{display:flex;gap:6px;margin-top:8px}\n#mw-top .pc-in span{border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px;color:#94a3b8;letter-spacing:.25em;flex:1}\n#mw-top .pc-in b{background:#ea580c;color:#fff;border-radius:8px;padding:8px 10px;font-size:11px}\n#mw-top .pc-btn{background:#ea580c;color:#fff;text-align:center;font-weight:700;border-radius:8px;padding:9px;margin-top:8px}\n#mw-top .sec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}\n#mw-top .card ul{margin-top:12px;display:grid;gap:7px;font-size:.94rem;color:var(--text)}\n#mw-top .card ul li{display:flex;gap:9px}\n#mw-top .card ul li::before{content:\"\u203a\";color:var(--accent);font-family:var(--mono);font-weight:700}\n#mw-top .for-you{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);font-size:.92rem;color:var(--text)}\n#mw-top .for-you b{color:var(--accent)}\n#mw-top .sec-visuals{display:grid;grid-template-columns:300px 1fr;gap:48px;margin-top:56px;align-items:center}\n#mw-top .sec-visuals figcaption{margin-top:12px;font-size:.9rem;color:var(--muted)}\n#mw-top .sec-note{margin-top:48px;padding:20px 24px;border-radius:14px;border:1px dashed #2b3a4c;color:var(--muted);font-size:.95rem}\n#mw-top .sec-note b{color:var(--text)}\n#mw-top .faq{max-width:52rem;margin:0 auto;display:grid;gap:12px}\n#mw-top details{border:1px solid var(--line);border-radius:12px;background:var(--card)}\n#mw-top summary{cursor:pointer;list-style:none;padding:16px 20px;font-family:var(--head);font-weight:600;display:flex;justify-content:space-between;align-items:center;gap:16px}\n#mw-top summary::-webkit-details-marker{display:none}\n#mw-top summary::after{content:\"+\";font-size:1.4rem;line-height:1;color:var(--accent);flex:none}\n#mw-top details[open] summary::after{content:\"\u2013\"}\n#mw-top details p{padding:0 20px 18px;color:var(--muted);font-size:.96rem}\n#mw-top .cta{border:1px solid rgba(61,217,191,.35);background:linear-gradient(135deg,rgba(61,217,191,.12),rgba(61,217,191,.03));border-radius:18px;padding:48px 32px;text-align:center}\n#mw-top .cta .lead{margin:16px auto 0}\n#mw-top .cta .cta-row{justify-content:center}\n#mw-top .foot{border-top:1px solid var(--line);padding:28px 0;color:var(--muted);font-size:.9rem}\n#mw-top .foot .wrap{display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between}\n#mw-top .foot a:hover{color:var(--text)}\n@media (max-width:1040px){\n#mw-top .feat-grid,#mw-top .sec-grid{grid-template-columns:repeat(2,1fr)}\n#mw-top .steps{grid-template-columns:repeat(2,1fr)}\n}\n@media (max-width:960px){\n#mw-top .hero .wrap,#mw-top .row,#mw-top .sec-visuals{grid-template-columns:1fr;gap:40px}\n#mw-top .cards3{grid-template-columns:1fr}\n#mw-top .row.rev .row-media{order:0}\n#mw-top .sec-visuals .phone{max-width:300px;margin:0 auto}\n}\n@media (max-width:760px){\n#mw-top .wrap{padding:0 20px}\n#mw-top .nav .wrap{height:auto;flex-wrap:wrap;gap:8px 16px;padding-top:10px;padding-bottom:10px}\n#mw-top .nav .btn{margin-left:auto}\n#mw-top .nav-links{order:3;width:100%;margin-left:0;gap:20px;overflow-x:auto;white-space:nowrap;padding-bottom:2px}\n#mw-top .hero{padding:56px 0}\n#mw-top .sec{padding:60px 0}\n#mw-top .feat-grid,#mw-top .sec-grid,#mw-top .steps{grid-template-columns:1fr}\n#mw-top .ticks4{grid-template-columns:1fr}\n#mw-top .cta{padding:36px 22px}\n}\n@media (max-width:560px){\n#mw-top .hero-visual .phone{display:none}\n#mw-top .hero-visual{padding-bottom:0}\n#mw-top .phones > *:first-child{margin-top:0}\n}\n@media (max-width:420px){\n#mw-top .wrap{padding:0 16px}\n}\n\nhtml{scroll-behavior:auto}\n@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}\nbody:has(#mw-top){background:#0a0e14}\nbody:has(#mw-top) .custom-header,body:has(#mw-top) #masthead,body:has(#mw-top) #secondary,body:has(#mw-top) #colophon,body:has(#mw-top) .entry-footer{display:none!important}\nbody:has(#mw-top) #content,body:has(#mw-top) #content-wrap,body:has(#mw-top) #primary,body:has(#mw-top) #main,body:has(#mw-top) .single-page-wrapper,body:has(#mw-top) article.page,body:has(#mw-top) .entry-content{width:100%;max-width:none;margin:0;padding:0;float:none;background:transparent;border:0;box-shadow:none}\nbody.admin-bar #mw-top .nav{top:32px}\n@media (max-width:782px){body.admin-bar #mw-top .nav{top:46px}}\n#mw-top .pc-t b{text-transform:none;letter-spacing:0}\n#mw-top .sec-visuals > *,#mw-top .row > *,#mw-top .hero .wrap > *{min-width:0}\n@media (max-width:560px){#mw-top .phones{flex-direction:column;align-items:center}#mw-top .phones > *{width:100%;max-width:340px;margin-top:0}#mw-top .sec-visuals .phone{width:100%;max-width:300px}}\n<\/style>\n<div id=\"mw-top\">\n<svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\"><defs>\n<symbol id=\"i-shield\" viewBox=\"0 0 24 24\"><path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\/><path d=\"m9 12 2 2 4-4\"\/><\/symbol>\n<symbol id=\"i-lock\" viewBox=\"0 0 24 24\"><rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\"\/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/><\/symbol>\n<symbol id=\"i-archive\" viewBox=\"0 0 24 24\"><rect width=\"20\" height=\"5\" x=\"2\" y=\"3\" rx=\"1\"\/><path d=\"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8\"\/><path d=\"M10 12h4\"\/><\/symbol>\n<symbol id=\"i-camera\" viewBox=\"0 0 24 24\"><path d=\"M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z\"\/><circle cx=\"12\" cy=\"13\" r=\"3\"\/><\/symbol>\n<symbol id=\"i-log\" viewBox=\"0 0 24 24\"><path d=\"M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z\"\/><path d=\"M14 2v6h6\"\/><path d=\"M16 13H8\"\/><path d=\"M16 17H8\"\/><path d=\"M10 9H8\"\/><\/symbol>\n<symbol id=\"i-server\" viewBox=\"0 0 24 24\"><rect width=\"20\" height=\"8\" x=\"2\" y=\"2\" rx=\"2\"\/><rect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\"\/><path d=\"M6 6h.01\"\/><path d=\"M6 18h.01\"\/><\/symbol>\n<symbol id=\"i-bell\" viewBox=\"0 0 24 24\"><path d=\"M6 8a6 6 0 0 1 12 0c0 7 3 9 3 9H3s3-2 3-9\"\/><path d=\"M10.3 21a1.94 1.94 0 0 0 3.4 0\"\/><\/symbol>\n<symbol id=\"i-pin\" viewBox=\"0 0 24 24\"><path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/symbol>\n<symbol id=\"i-phone\" viewBox=\"0 0 24 24\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/symbol>\n<symbol id=\"i-repeat\" viewBox=\"0 0 24 24\"><path d=\"m17 2 4 4-4 4\"\/><path d=\"M3 11v-1a4 4 0 0 1 4-4h14\"\/><path d=\"m7 22-4-4 4-4\"\/><path d=\"M21 13v1a4 4 0 0 1-4 4H3\"\/><\/symbol>\n<symbol id=\"i-dash\" viewBox=\"0 0 24 24\"><rect width=\"7\" height=\"9\" x=\"3\" y=\"3\" rx=\"1\"\/><rect width=\"7\" height=\"5\" x=\"14\" y=\"3\" rx=\"1\"\/><rect width=\"7\" height=\"9\" x=\"14\" y=\"12\" rx=\"1\"\/><rect width=\"7\" height=\"5\" x=\"3\" y=\"16\" rx=\"1\"\/><\/symbol>\n<symbol id=\"i-check\" viewBox=\"0 0 24 24\"><path d=\"M20 6 9 17l-5-5\"\/><\/symbol>\n<symbol id=\"i-list\" viewBox=\"0 0 24 24\"><rect width=\"8\" height=\"4\" x=\"8\" y=\"2\" rx=\"1\"\/><path d=\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\"\/><path d=\"m9 14 2 2 4-4\"\/><\/symbol>\n<symbol id=\"i-at\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"4\"\/><path d=\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8\"\/><\/symbol>\n<symbol id=\"i-inbox\" viewBox=\"0 0 24 24\"><path d=\"M22 12h-6l-2 3h-4l-2-3H2\"\/><path d=\"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\"\/><\/symbol>\n<symbol id=\"i-palette\" viewBox=\"0 0 24 24\"><circle cx=\"8\" cy=\"9\" r=\"2.5\"\/><circle cx=\"16\" cy=\"9\" r=\"2.5\"\/><circle cx=\"12\" cy=\"16\" r=\"2.5\"\/><\/symbol>\n<symbol id=\"i-eye\" viewBox=\"0 0 24 24\"><path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/symbol>\n<\/defs><\/svg>\n<header class=\"nav\"><div class=\"wrap\">\n<a class=\"brand\" href=\"\/\" aria-label=\"Mateusz Wojciechowski, strona g\u0142\u00f3wna\"><span class=\"mark\">MW<\/span><span>Mateusz Wojciechowski<\/span><\/a>\n<nav class=\"nav-links\" aria-label=\"Sekcje strony\"><a href=\"\/#portfolio\">\u2190 Portfolio<\/a><a href=\"#funkcje\">Funkcje<\/a><a href=\"#bezpieczenstwo\">Bezpiecze\u0144stwo<\/a><a href=\"#wdrozenie\">Wdro\u017cenie<\/a><a href=\"#pytania\">Pytania<\/a><\/nav>\n<a class=\"btn btn-primary\" href=\"#kontakt\" data-e=\"hcet.ikswohceicjow@zsuetam\" data-s=\"Prezentacja programu Budowy\">Um\u00f3w prezentacj\u0119<\/a>\n<\/div><\/header>\n<main>\n<section class=\"hero\" aria-labelledby=\"h-hero\"><div class=\"wrap\">\n<div>\n<a class=\"crumb mono\" href=\"\/#portfolio\">\u2190 Portfolio \u00b7 Program 1<\/a>\n<p class=\"eyebrow mono\">\/\/ program do zarz\u0105dzania zadaniami na budowach<\/p>\n<h1 id=\"h-hero\">Wiesz, co dzieje si\u0119 na ka\u017cdej budowie. <span class=\"accent\">Bez dzwonienia i bez kartek.<\/span><\/h1>\n<p class=\"lead\">Zlecasz zadanie, ekipa odhacza je w telefonie i dokumentuje zdj\u0119ciem, a Ty zatwierdzasz wykonanie. Wszystko w jednym miejscu, z pe\u0142n\u0105 histori\u0105 i na Twoim w\u0142asnym serwerze.<\/p>\n<div class=\"cta-row\"><a class=\"btn btn-primary\" href=\"#kontakt\" data-e=\"hcet.ikswohceicjow@zsuetam\" data-s=\"Prezentacja programu Budowy\">Um\u00f3w prezentacj\u0119<\/a><a class=\"btn btn-ghost\" href=\"#bezpieczenstwo\">Zobacz zabezpieczenia<\/a><\/div>\n<ul class=\"ticks4\">\n<li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-phone\"\/><\/svg>Dzia\u0142a na Androidzie i iPhonie, bez instalacji ze sklepu<\/li>\n<li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-server\"\/><\/svg>Dane na Twoim serwerze, nie w cudzej chmurze<\/li>\n<li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-lock\"\/><\/svg>Logowanie dwusk\u0142adnikowe (2FA)<\/li>\n<li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-archive\"\/><\/svg>Historia zmian tylko do odczytu<\/li>\n<\/ul>\n<\/div>\n<div class=\"hero-visual\">\n<div class=\"app\" role=\"img\" aria-label=\"Podgl\u0105d pulpitu kierownika: liczniki zada\u0144, sprawy wymagaj\u0105ce uwagi i zadania do zatwierdzenia. Dane przyk\u0142adowe.\">\n<div class=\"a-top\"><div class=\"a-logo\">B<\/div><b>Budowy<\/b><\/div>\n<div class=\"a-h\">Pulpit<\/div>\n<div class=\"a-sub\">Micha\u0142 Zieli\u0144ski \u2014 stan wszystkich bud\u00f3w w jednym miejscu.<\/div>\n<div class=\"kpis\"><div class=\"k red\"><b>4<\/b>Po terminie<\/div><div class=\"k amb\"><b>1<\/b>Termin dzisiaj<\/div><div class=\"k blu\"><b>5<\/b>W trakcie<\/div><div class=\"k wht\"><b>6<\/b>Nieprzydzielone<\/div><div class=\"k grn\"><b>13<\/b>Wykonane<\/div><\/div>\n<div class=\"a-warn\"><div class=\"w-h\">Wymaga uwagi<\/div><ul><li>4 zadania przekroczy\u0142y termin<\/li><li>6 zada\u0144 nie ma wykonawcy<\/li><li>2 zadania czekaj\u0105 na weryfikacj\u0119<\/li><\/ul><\/div>\n<div class=\"a-lab\">Czeka na Twoje zatwierdzenie<\/div>\n<div class=\"a-cards\"><div class=\"t\"><b>Izolacja rur c.w.u. \u2013 piwnica<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><span>Termin: 14.10.2026<\/span><i>Do weryfikacji<\/i><\/div><div class=\"t\"><b>Monta\u017c o\u015bcie\u017cnic \u2013 sale 101\u2013105<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><span>Termin: 15.10.2026<\/span><i>Do weryfikacji<\/i><\/div><\/div>\n<\/div>\n<div class=\"phone\" role=\"img\" aria-label=\"Ekran Moje zadania w telefonie pracownika. Dane przyk\u0142adowe.\"><div class=\"scr\">\n<div class=\"p-top\"><span class=\"p-logo\">B<\/span><b>Budowy<\/b><span class=\"p-sp\"><\/span><span class=\"p-bell\">4<\/span><\/div>\n<div class=\"p-h\">Moje zadania<\/div><div class=\"p-sub\">Cze\u015b\u0107, Piotr. Oto co masz na dzi\u015b.<\/div>\n<div class=\"p-row red\"><span>Po terminie<\/span><i>0<\/i><\/div><div class=\"p-row amb\"><span>Na dzi\u015b<\/span><i>1<\/i><\/div><div class=\"p-row blu\"><span>W trakcie<\/span><i>2<\/i><\/div><div class=\"p-row wht\"><span>Nadchodz\u0105ce<\/span><i>3<\/i><\/div><div class=\"p-row org\"><span>Dost\u0119pne zadania<\/span><i>6<\/i><\/div>\n<div class=\"p-lab\">Dzisiaj i zaleg\u0142e<\/div>\n<div class=\"p-task\"><b>Usun\u0105\u0107 kolizj\u0119 instalacji z belk\u0105 stropow\u0105 \u2013 pom. 204<\/b><em>Pilny<\/em><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><\/div>\n<div class=\"p-nav\"><span>Start<\/span><span>Dost\u0119pne<\/span><span>Moja ekipa<\/span><\/div>\n<\/div><\/div>\n<span class=\"cap\">podgl\u0105d programu \u00b7 dane przyk\u0142adowe<\/span>\n<\/div>\n<\/div><\/section>\n<section class=\"sec sec-alt pain\" aria-labelledby=\"h-pain\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Znasz to?<\/p><h2 id=\"h-pain\">Budowa to dziesi\u0105tki spraw naraz. Gdzie one dzi\u015b l\u0105duj\u0105?<\/h2><\/div>\n<div class=\"cards3\">\n<div class=\"card\"><h3>Zadania w SMS-ach i na kartkach<\/h3><p>Po tygodniu nikt nie pami\u0119ta, kto mia\u0142 co zrobi\u0107 i do kiedy. Ka\u017cda zmiana terminu to kolejny telefon.<\/p><\/div>\n<div class=\"card\"><h3>Zdj\u0119cia w prywatnych telefonach<\/h3><p>Gdy inspektor albo inwestor pyta o dokumentacj\u0119 wykonanych rob\u00f3t, zaczyna si\u0119 szukanie po galeriach.<\/p><\/div>\n<div class=\"card\"><h3>Kierownik dowiaduje si\u0119 ostatni<\/h3><p>O op\u00f3\u017anieniu s\u0142yszysz, kiedy termin ju\u017c min\u0105\u0142. A o tym, \u017ce ekipa czeka na materia\u0142, jeszcze p\u00f3\u017aniej.<\/p><\/div>\n<\/div>\n<p class=\"bridge\">Program zbiera to wszystko w jednym miejscu, <span>na tyle prostym, \u017ce obs\u0142u\u017cy je ka\u017cdy pracownik.<\/span><\/p>\n<\/div><\/section>\n<section class=\"sec\" aria-labelledby=\"h-steps\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Jak to dzia\u0142a<\/p><h2 id=\"h-steps\">Od zlecenia do zatwierdzenia: cztery kroki<\/h2><p>Ka\u017cdy krok zostaje w historii zadania: kto, kiedy i co zrobi\u0142.<\/p><\/div>\n<ol class=\"steps\">\n<li><h3>Zlecasz<\/h3><p>Kierownik albo brygadzista zak\u0142ada zadanie: budowa, termin, ekipa lub konkretna osoba, opcjonalnie lista kontrolna.<\/p><\/li>\n<li><h3>Ekipa pracuje<\/h3><p>Pracownik widzi swoje zadania w telefonie. Rozpoczyna prac\u0119, odhacza punkty, robi zdj\u0119cia, pisze komentarze.<\/p><\/li>\n<li><h3>Zg\u0142asza wykonanie<\/h3><p>Program pilnuje wymaga\u0144 ustawionych przy zadaniu: zdj\u0119cia, komentarza i odhaczenia wszystkich punkt\u00f3w listy.<\/p><\/li>\n<li><h3>Zatwierdzasz<\/h3><p>Kierownik zatwierdza albo zwraca do poprawy z opisem. Nic nie znika, poprzednie zg\u0142oszenia zostaj\u0105 w historii.<\/p><\/li>\n<\/ol><\/div><\/section>\n<section class=\"sec sec-alt\" id=\"funkcje\" aria-labelledby=\"h-feat\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Funkcje<\/p><h2 id=\"h-feat\">Wszystko, czego potrzebuje ekipa i kierownik<\/h2><p>Bez rozbudowanych modu\u0142\u00f3w, kt\u00f3rych nikt nie u\u017cywa. Tylko to, co przydaje si\u0119 na budowie ka\u017cdego dnia.<\/p><\/div>\n<div class=\"feat-grid\"><div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-palette\"\/><\/svg><\/div><h3>Kolory, kt\u00f3re m\u00f3wi\u0105 same za siebie<\/h3><p>Kolor zadania wynika ze statusu i terminu, wi\u0119c nikt nie ustawia go r\u0119cznie. Osobne kolory maj\u0105 zadania po terminie, z bliskim terminem, w trakcie, do weryfikacji i wykonane.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-camera\"\/><\/svg><\/div><h3>Zdj\u0119cia prosto z aparatu<\/h3><p>Jedno dotkni\u0119cie i zdj\u0119cie wysy\u0142a si\u0119 samo. Program zmniejsza je i usuwa z nich lokalizacj\u0119 GPS oraz dane telefonu.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-list\"\/><\/svg><\/div><h3>Listy kontrolne<\/h3><p>Kroki do odhaczenia w zadaniu. Zg\u0142oszenie wykonania jest zablokowane, dop\u00f3ki wykonawca nie odhaczy wszystkich.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-at\"\/><\/svg><\/div><h3>Wzmianki @ w komentarzach<\/h3><p>Chcesz, \u017ceby kto\u015b na pewno to zobaczy\u0142? Wspomnij o nim, a dostanie w\u0142asne powiadomienie.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-pin\"\/><\/svg><\/div><h3>Nawiguj i Zadzwo\u0144<\/h3><p>Trasa do budowy i telefon do kierownika, zlecaj\u0105cego lub brygadzisty jednym dotkni\u0119ciem, bez przepisywania.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-bell\"\/><\/svg><\/div><h3>Powiadomienia na telefon<\/h3><p>Dostajesz sygna\u0142 o nowym zadaniu, zmianie terminu, komentarzu i zbli\u017caj\u0105cym si\u0119 terminie, tak\u017ce wtedy, gdy program jest zamkni\u0119ty.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-inbox\"\/><\/svg><\/div><h3>Zadania do wzi\u0119cia<\/h3><p>Drobne prace bez wykonawcy trafiaj\u0105 na list\u0119 \u201eDost\u0119pne\u201d. Pierwsza wolna osoba przyjmuje zadanie jednym przyciskiem.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-repeat\"\/><\/svg><\/div><h3>Zadania cykliczne<\/h3><p>Cotygodniowa kontrola rusztowa\u0144, miesi\u0119czny przegl\u0105d BHP: program zak\u0142ada je sam i przypomina o terminach.<\/p><\/div>\n<div class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-dash\"\/><\/svg><\/div><h3>Pulpit, kalendarz, tablica, raporty<\/h3><p>Kierownik od razu widzi, co wymaga uwagi: zadania po terminie, bez wykonawcy, czekaj\u0105ce na zatwierdzenie.<\/p><\/div><\/div>\n<\/div><\/section>\n<section class=\"sec\" aria-label=\"Szczeg\u00f3\u0142y dzia\u0142ania\"><div class=\"wrap\">\n<div class=\"row\">\n<div><p class=\"kicker mono\">Lista kontrolna i wzmianki<\/p><h2>Nic nie umknie, bo program tego pilnuje<\/h2><p class=\"lead\">Wykonawca odhacza punkty na telefonie, a pod ka\u017cdym zapisuje si\u0119, kto i kiedy to zrobi\u0142.<\/p>\n<ul class=\"checks\"><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span><b>Post\u0119p na pierwszy rzut oka:<\/b> \u201e3 z 5\u201d na karcie zadania i na kafelku na li\u015bcie.<\/span><\/li><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span><b>Zg\u0142oszenie dopiero po odhaczeniu wszystkiego:<\/b> pilnuje tego serwer, a nie tylko menu na ekranie.<\/span><\/li><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span><b>Wzmianka @osoba:<\/b> powiadomienie dostaje tylko ten, kto naprawd\u0119 widzi to zadanie.<\/span><\/li><\/ul><\/div>\n<div class=\"row-media\"><div class=\"phones\" role=\"img\" aria-label=\"Lista kontrolna z paskiem post\u0119pu 3 z 5 oraz komentarze z wzmiank\u0105. Dane przyk\u0142adowe.\">\n<div class=\"pcard\"><div class=\"pc-t\"><span>Lista kontrolna<\/span><b>3 z 5<\/b><\/div><div class=\"bar\"><i><\/i><\/div>\n<div class=\"ck\"><span class=\"bx on\"><\/span><div><span class=\"done\">Zamontowa\u0107 pion PVC 110 od piwnicy do II pi\u0119tra<\/span><small>Piotr Nowak \u00b7 12.10.2026 o 09:15<\/small><\/div><\/div>\n<div class=\"ck\"><span class=\"bx on\"><\/span><div><span class=\"done\">Za\u0142o\u017cy\u0107 rewizje na ka\u017cdej kondygnacji<\/span><small>Piotr Nowak \u00b7 12.10.2026 o 10:15<\/small><\/div><\/div>\n<div class=\"ck\"><span class=\"bx on\"><\/span><div><span class=\"done\">Zamocowa\u0107 obejmy co 1,5 m<\/span><small>Piotr Nowak \u00b7 12.10.2026 o 11:15<\/small><\/div><\/div>\n<div class=\"ck\"><span class=\"bx\"><\/span><div>Sprawdzi\u0107 spadki poziomic\u0105<\/div><\/div>\n<div class=\"ck\"><span class=\"bx\"><\/span><div>Uszczelni\u0107 przej\u015bcia przez stropy<\/div><\/div><\/div>\n<div class=\"pcard\"><div class=\"pc-t\"><span>Komentarze (3)<\/span><\/div>\n<div class=\"cm\"><small>Micha\u0142 Zieli\u0144ski \u00b7 12.10.2026 o 14:10<\/small>Sprawd\u017a r\u00f3wnie\u017c pion w pomieszczeniu 204, w projekcie jest zmiana.<\/div>\n<div class=\"cm\"><small>Micha\u0142 Zieli\u0144ski \u00b7 12.10.2026 o 14:10<\/small><span class=\"mention\">@Piotr Nowak<\/span> zdj\u0119cia z 204 dodaj jeszcze dzi\u015b, inspektor prosi\u0142 o dokumentacj\u0119.<\/div>\n<div class=\"cm\"><small>Piotr Nowak \u00b7 13.10.2026 o 14:10<\/small>Pion w 204 sprawdzony, zgodny z nowym rysunkiem.<\/div>\n<div class=\"ta\">Dzi\u0119ki, dodaj\u0119 zdj\u0119cia. @Zie<\/div><div class=\"sug\"><em>@<\/em>Micha\u0142 Zieli\u0144ski<\/div>\n<div class=\"btns\"><span class=\"dark\">Dodaj komentarz<\/span><span>@ Wspomnij osob\u0119<\/span><\/div><\/div>\n<\/div><span class=\"cap\">podgl\u0105d programu \u00b7 dane przyk\u0142adowe<\/span><\/div>\n<\/div>\n<div class=\"row rev\">\n<div><p class=\"kicker mono\">Dojazd i kontakt<\/p><h2>Dojazd i telefon jednym dotkni\u0119ciem<\/h2><p class=\"lead\">Na karcie zadania jest adres budowy z przyciskiem <b>Nawiguj<\/b> oraz cz\u0119\u015b\u0107 <b>Kontakt<\/b> z przyciskami <b>Zadzwo\u0144<\/b>.<\/p>\n<ul class=\"checks\"><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span>Trasa otwiera si\u0119 w aplikacji map albo w przegl\u0105darce, na Androidzie i na iPhonie.<\/span><\/li><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span>Numery widz\u0105 tylko osoby, kt\u00f3re maj\u0105 pow\u00f3d zadzwoni\u0107: kierownik budowy, zlecaj\u0105cy i brygadzista.<\/span><\/li><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span>Numer\u00f3w koleg\u00f3w z ekipy program pracownikowi nie pokazuje.<\/span><\/li><\/ul><\/div>\n<div class=\"row-media\"><div class=\"pcard\" style=\"max-width:420px;margin:0 auto\" role=\"img\" aria-label=\"Cz\u0119\u015b\u0107 Kontakt na karcie zadania z przyciskami Zadzwo\u0144. Dane przyk\u0142adowe.\"><div class=\"pc-t\"><span>Kontakt<\/span><\/div>\n<div class=\"ct f\"><div><strong>Micha\u0142 Zieli\u0144ski<\/strong><small>Kierownik budowy \u00b7 Zleci\u0142(a) zadanie<\/small><\/div><em>Zadzwo\u0144<\/em><\/div>\n<div class=\"ct\"><div><strong>Jan Kowalski<\/strong><small>Brygadzista ekipy<\/small><\/div><em>Zadzwo\u0144<\/em><\/div><\/div><span class=\"cap\">podgl\u0105d programu \u00b7 dane przyk\u0142adowe<\/span><\/div>\n<\/div>\n<div class=\"row\">\n<div><p class=\"kicker mono\">Raport zdj\u0119ciowy<\/p><h2>Dokumentacja dla inwestora w kilka sekund<\/h2><p class=\"lead\">Zdj\u0119cia z budowy albo z jednego zadania zbierasz w gotowy plik PDF: do protoko\u0142u odbioru, dla inwestora lub inspektora.<\/p>\n<ul class=\"checks\"><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span>Zdj\u0119cia pogrupowane po zadaniach, z dat\u0105, autorem, statusem i terminem.<\/span><\/li><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span>Zakres dat do wyboru; raport ma polskie znaki i numeracj\u0119 stron.<\/span><\/li><li><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-check\"\/><\/svg><span>W raporcie s\u0105 tylko zdj\u0119cia z zada\u0144, kt\u00f3re dana osoba ma prawo widzie\u0107. Ka\u017cde pobranie trafia do dziennika zdarze\u0144.<\/span><\/li><\/ul><\/div>\n<div class=\"row-media\"><div class=\"pdf\" role=\"img\" aria-label=\"Pierwsza strona raportu zdj\u0119ciowego w PDF: nag\u0142\u00f3wek budowy i zdj\u0119cia pogrupowane po zadaniach. Dane przyk\u0142adowe.\">\n<div class=\"pdf-h\">Raport zdj\u0119ciowy<\/div><div class=\"pdf-s\">Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/div>\n<div class=\"pdf-m\">Adres: ul. Przyk\u0142adowa 5, Opole<br>Numer projektu: INW\/2026\/014<br>Klient: Gmina Przyk\u0142adowo<br>Zakres: wszystkie zdj\u0119cia<br>Zdj\u0119\u0107: 8 \u00b7 zada\u0144: 4<br>Wygenerowano: 13.10.2026 o 23:36 (Micha\u0142 Zieli\u0144ski)<\/div>\n<div class=\"pdf-t\">Monta\u017c pionu kanalizacyjnego \u2013 klatka A<\/div><div class=\"pdf-d\">W trakcie \u00b7 termin 15.10.2026 \u00b7 wykonawca: Piotr Nowak \u00b7 ekipa: Ekipa instalacyjna 2 \u00b7 lista kontrolna: 5 z 5<\/div>\n<div class=\"pdf-ph\"><div><div class=\"ph1\"><\/div><div class=\"pdf-c\">12.10.2026 o 12:40 \u00b7 Piotr Nowak<\/div><\/div><div><div class=\"ph2\"><\/div><div class=\"pdf-c\">13.10.2026 o 11:05 \u00b7 Piotr Nowak<\/div><\/div><div><div class=\"ph2\"><\/div><div class=\"pdf-c\">13.10.2026 o 12:40 \u00b7 Piotr Nowak<\/div><\/div><\/div>\n<div class=\"pdf-f\"><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa \u00b7 Raport zdj\u0119ciowy<\/span><span>Strona 1 z 3<\/span><\/div><\/div><span class=\"cap\">podgl\u0105d raportu \u00b7 dane przyk\u0142adowe<\/span><\/div>\n<\/div>\n<\/div><\/section>\n<section class=\"sec sec-alt\" aria-labelledby=\"h-board\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Przegl\u0105d<\/p><h2 id=\"h-board\">Ca\u0142a firma na jednej tablicy<\/h2><p>Zadania przesuwaj\u0105 si\u0119 od \u201eNowe\u201d przez \u201eW trakcie\u201d a\u017c do \u201eWykonane\u201d. Widzisz w\u0105skie gard\u0142a, zanim zrobi si\u0119 z nich problem.<\/p><\/div>\n<div class=\"win\" role=\"img\" aria-label=\"Tablica zada\u0144 w kolumnach Nowe, Przydzielone, W trakcie i Oczekuje, z kolorowymi paskami termin\u00f3w. Dane przyk\u0142adowe.\"><div class=\"win-bar\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/div>\n<div class=\"board\" aria-hidden=\"true\">\n<div><div class=\"col-h\">Nowe<\/div><div class=\"kc \"><b>Kontrola rusztowa\u0144 \u2013 elewacja p\u00f3\u0142nocna<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"\">\u25cf 14.10.2026<\/em><em>Wysoki<\/em><i>Nieprzydzielone<\/i><\/div><div class=\"kc \"><b>Uporz\u0105dkowa\u0107 magazyn materia\u0142\u00f3w na budowie<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"\">\u25cf 14.10.2026<\/em><i>Nieprzydzielone<\/i><\/div><div class=\"kc \"><b>Oznakowanie strefy prac na placu budowy<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"\">\u25cf 15.10.2026<\/em><em>Wysoki<\/em><i>Nieprzydzielone<\/i><\/div><\/div>\n<div><div class=\"col-h\">Przydzielone<\/div><div class=\"kc r\"><b>Pr\u00f3ba szczelno\u015bci instalacji wodnej \u2013 parter<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"r\">\u25cf 10.10.2026<\/em><i>Adam Kowalczyk<\/i><\/div><div class=\"kc r\"><b>Monta\u017c umywalek dzieci\u0119cych \u2013 \u0142azienka grupy III<\/b><span>Przedszkole Miejskie nr 12<\/span><em class=\"r\">\u25cf 11.10.2026<\/em><i>\u0141ukasz Mazur<\/i><\/div><div class=\"kc r\"><b>Obr\u00f3bki blacharskie okien \u2013 elewacja wschodnia<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"r\">\u25cf 12.10.2026<\/em><i>Pawe\u0142 Kami\u0144ski<\/i><\/div><\/div>\n<div><div class=\"col-h\">W trakcie<\/div><div class=\"kc r\"><b>Uzgodnienie przy\u0142\u0105czy z zarz\u0105dc\u0105 sieci<\/b><span>Hala sportowa przy Zespole Szk\u00f3\u0142<\/span><em class=\"r\">\u25cf 08.10.2026<\/em><em>Wysoki<\/em><i>Anna Szyma\u0144ska<\/i><\/div><div class=\"kc b\"><b>Pod\u0142\u0105czenie umywalek \u2013 toalety parter<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"b\">\u25cf 14.10.2026<\/em><i>Piotr Nowak<\/i><\/div><div class=\"kc b\"><b>Monta\u017c pionu kanalizacyjnego \u2013 klatka A<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"b\">\u25cf 15.10.2026<\/em><em>Wysoki<\/em><i>Piotr Nowak<\/i><\/div><\/div>\n<div><div class=\"col-h\">Oczekuje<\/div><div class=\"kc \"><b>Tynkowanie \u015bcian \u2013 klatka B<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"\">\u25cf 14.10.2026<\/em><em>Wysoki<\/em><i>Pawe\u0142 Kami\u0144ski<\/i><\/div><div class=\"kc \"><b>Zabudowa zestawu wodomierzowego<\/b><span>Szko\u0142a Podstawowa nr 5 \u2014 rozbudowa<\/span><em class=\"\">\u25cf 16.10.2026<\/em><i>Adam Kowalczyk<\/i><\/div><\/div>\n<\/div><\/div><span class=\"cap\">podgl\u0105d tablicy \u00b7 dane przyk\u0142adowe<\/span>\n<\/div><\/section>\n<section class=\"sec\" id=\"bezpieczenstwo\" aria-labelledby=\"h-sec\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Bezpiecze\u0144stwo<\/p><h2 id=\"h-sec\">Bezpiecze\u0144stwo to nie dodatek. To fundament.<\/h2><p>W programie znajduj\u0105 si\u0119 dokumentacja bud\u00f3w, zdj\u0119cia i dane pracownik\u00f3w. Dlatego zabezpieczenia powsta\u0142y razem z pierwsz\u0105 funkcj\u0105, a nie zosta\u0142y dopisane na ko\u0144cu.<\/p><\/div>\n<div class=\"sec-grid\"><article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-lock\"\/><\/svg><\/div><h3>Logowanie, kt\u00f3rego nie da si\u0119 \u0142atwo obej\u015b\u0107<\/h3><ul><li>Logowanie dwusk\u0142adnikowe: kod z Google Authenticator i kody zapasowe<\/li><li>Blokada konta po serii b\u0142\u0119dnych pr\u00f3b<\/li><li>Program wymusza zmian\u0119 has\u0142a tymczasowego przy pierwszym logowaniu<\/li><\/ul><p class=\"for-you\"><b>Dla Ciebie:<\/b> samo wykradzione has\u0142o nie wystarczy, \u017ceby wej\u015b\u0107 na konto kierownika.<\/p><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-eye\"\/><\/svg><\/div><h3>Ka\u017cdy widzi tylko to, co powinien<\/h3><ul><li>Cztery role: administrator, kierownik, brygadzista, pracownik<\/li><li>Uprawnienia sprawdza serwer przy ka\u017cdej operacji, a nie tylko menu na ekranie<\/li><li>Pracownik widzi swoje zadania, zadania swojej ekipy i dzia\u0142u oraz zadania do wzi\u0119cia, ale nie ca\u0142\u0105 firm\u0119<\/li><\/ul><p class=\"for-you\"><b>Dla Ciebie:<\/b> pracownik nie zajrzy do cudzych zada\u0144 imiennych ani do zdj\u0119\u0107 z zada\u0144, do kt\u00f3rych nie ma dost\u0119pu.<\/p><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-archive\"\/><\/svg><\/div><h3>Nic nie znika po cichu<\/h3><ul><li>Zadania trafiaj\u0105 do archiwum, konta s\u0105 dezaktywowane<\/li><li>Histori\u0119 zadania i dziennik zdarze\u0144 mo\u017cna tylko uzupe\u0142nia\u0107; w programie nie da si\u0119 ich edytowa\u0107 ani usuwa\u0107<\/li><li>Zwrot do poprawy zachowuje poprzednie zg\u0142oszenie<\/li><\/ul><p class=\"for-you\"><b>Dla Ciebie:<\/b> w razie sporu masz pe\u0142ny, niezmienny zapis przebiegu prac.<\/p><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-camera\"\/><\/svg><\/div><h3>Zdj\u0119cia pod kontrol\u0105<\/h3><ul><li>Zdj\u0119cia nie le\u017c\u0105 w publicznym katalogu: przy ka\u017cdym otwarciu program sprawdza uprawnienia do zadania<\/li><li>Przy zapisie usuwane s\u0105 dane GPS i model telefonu<\/li><li>Raport PDF zawiera tylko zdj\u0119cia z zada\u0144 dost\u0119pnych dla osoby, kt\u00f3ra go pobiera<\/li><\/ul><p class=\"for-you\"><b>Dla Ciebie:<\/b> sam adres zdj\u0119cia nikomu nic nie da, bez zalogowania i uprawnie\u0144 si\u0119 nie otworzy.<\/p><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-log\"\/><\/svg><\/div><h3>Dziennik zdarze\u0144<\/h3><ul><li>Kto, kiedy i sk\u0105d (adres IP): logowania, zmiany kont i uprawnie\u0144, eksporty danych i pobrania raport\u00f3w<\/li><li>Lista nieudanych pr\u00f3b logowania w panelu administratora<\/li><li>Okres przechowywania ustawiasz sam<\/li><\/ul><p class=\"for-you\"><b>Dla Ciebie:<\/b> widzisz, \u017ce kto\u015b pr\u00f3buje wej\u015b\u0107 na cudze konto, zanim cokolwiek si\u0119 stanie.<\/p><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-server\"\/><\/svg><\/div><h3>Twoje dane na Twoim serwerze<\/h3><ul><li>Program dzia\u0142a na serwerze firmy (np. NAS lub VPS), nie w cudzej chmurze<\/li><li>Szyfrowane po\u0142\u0105czenie (HTTPS) i nag\u0142\u00f3wki zabezpieczaj\u0105ce przegl\u0105dark\u0119<\/li><li>Aplikacja dzia\u0142a w izolowanym kontenerze, bez uprawnie\u0144 administratora, a baza danych jest niedost\u0119pna z internetu<\/li><\/ul><p class=\"for-you\"><b>Dla Ciebie:<\/b> to Ty decydujesz, gdzie le\u017c\u0105 dane i kto ma do nich dost\u0119p.<\/p><\/article><\/div>\n<div class=\"sec-visuals\">\n<figure><div class=\"phone\" role=\"img\" aria-label=\"W\u0142\u0105czanie logowania dwusk\u0142adnikowego w ustawieniach konta; kod QR zamazany.\"><div class=\"scr big\">\n<div class=\"p-top\"><span class=\"p-logo\" style=\"width:20px;height:20px;font-size:10px\">B<\/span><b>Budowy<\/b><span class=\"p-sp\"><\/span><span class=\"p-bell\">4<\/span><\/div>\n<div class=\"pc-card\"><div class=\"pc-t\"><span>Logowanie dwusk\u0142adnikowe (2FA)<\/span><\/div><p><b>1.<\/b> Zainstaluj w telefonie Google Authenticator (lub inn\u0105 aplikacj\u0119 uwierzytelniaj\u0105c\u0105).<\/p><p><b>2.<\/b> Zeskanuj ten kod:<\/p><div class=\"qr\"><\/div><p style=\"color:#64748b;font-size:10px\">Nie dzia\u0142a aparat? Wpisz r\u0119cznie klucz: \u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022<\/p><p><b>3.<\/b> Przepisz 6-cyfrowy kod, kt\u00f3ry poka\u017ce aplikacja:<\/p><div class=\"pc-in\"><span>000000<\/span><b>Potwierd\u017a i w\u0142\u0105cz<\/b><\/div><\/div>\n<div class=\"pc-card\"><div class=\"pc-t\"><span>Powiadomienia na telefonie<\/span><\/div><p>Dostaniesz sygna\u0142 o nowym zadaniu, zmianie terminu, komentarzu i zbli\u017caj\u0105cym si\u0119 terminie, tak\u017ce wtedy, gdy aplikacja jest zamkni\u0119ta.<\/p><div class=\"pc-btn\">W\u0142\u0105cz powiadomienia na tym telefonie<\/div><\/div>\n<\/div><\/div><figcaption>Logowanie dwusk\u0142adnikowe w\u0142\u0105czasz samodzielnie w Ustawieniach konta, w kilka minut. (Kod QR na podgl\u0105dzie jest zamazany.)<\/figcaption><\/figure>\n<figure><div class=\"app\" role=\"img\" aria-label=\"Dziennik zdarze\u0144: logowania, tworzenie kont, zatwierdzenia, eksport danych, z dat\u0105 i osob\u0105. Dane przyk\u0142adowe.\"><div class=\"pc-t\"><span>Dziennik zdarze\u0144<\/span><\/div><div class=\"tblw\"><table class=\"tbl\" aria-hidden=\"true\"><thead><tr><th>Kiedy<\/th><th>Kto<\/th><th>Operacja<\/th><th>Obiekt<\/th><th>Szczeg\u00f3\u0142y<\/th><\/tr><\/thead><tbody><tr><td>13.10.2026 o 23:43<\/td><td>marta.nowicka@budowy.przyklad<\/td><td>LOGOWANIE<\/td><td>User<\/td><td>Logowanie z 2FA<\/td><\/tr><tr><td>13.10.2026 o 23:42<\/td><td>michal.zielinski@budowy.przyklad<\/td><td>LOGOWANIE<\/td><td>User<\/td><td>Logowanie z 2FA<\/td><\/tr><tr><td>13.10.2026 o 23:42<\/td><td>jan.kowalski@budowy.przyklad<\/td><td>LOGOWANIE<\/td><td>User<\/td><td>Logowanie bez 2FA<\/td><\/tr><tr><td>10.10.2026 o 10:12<\/td><td>Micha\u0142 Zieli\u0144ski<\/td><td>RESET_HASLA<\/td><td>User<\/td><td>Has\u0142o ustawione przez osob\u0119 zarz\u0105dzaj\u0105c\u0105 kontami<\/td><\/tr><tr><td>10.10.2026 o 10:12<\/td><td>Marta Nowicka<\/td><td>UTWORZENIE_KONTA<\/td><td>User<\/td><td>\u0141ukasz Mazur, rola: PRACOWNIK<\/td><\/tr><tr><td>09.10.2026 o 10:12<\/td><td>Micha\u0142 Zieli\u0144ski<\/td><td>ZATWIERDZENIE_ZADANIA<\/td><td>Task<\/td><td>Wymiana zaworu odcinaj\u0105cego \u2013 kot\u0142ownia<\/td><\/tr><tr><td>05.10.2026 o 10:12<\/td><td>Marta Nowicka<\/td><td>EKSPORT_DANYCH_RODO<\/td><td>User<\/td><td>Kopia danych innego u\u017cytkownika<\/td><\/tr><tr><td>03.10.2026 o 10:12<\/td><td>Marta Nowicka<\/td><td>ZMIANA_USTAWIEN<\/td><td>Setting<\/td><td>Zmiana prog\u00f3w termin\u00f3w i okres\u00f3w przechowywania danych<\/td><\/tr><tr><td>24.08.2026 o 10:12<\/td><td>Tomasz Wi\u015bniewski<\/td><td>WLACZENIE_2FA<\/td><td>User<\/td><td>U\u017cytkownik w\u0142\u0105czy\u0142 logowanie dwusk\u0142adnikowe<\/td><\/tr><\/tbody><\/table><\/div><div class=\"app-note\">Wpisy dziennika s\u0105 tylko dopisywane. Aplikacja nie pozwala ich edytowa\u0107 ani usuwa\u0107; znikaj\u0105 wy\u0142\u0105cznie po up\u0142ywie okresu przechowywania.<\/div><\/div><figcaption>Dziennik zdarze\u0144 w panelu administratora. Dane s\u0105 fikcyjne. Wpisy s\u0105 tylko dopisywane.<\/figcaption><\/figure>\n<\/div>\n<div class=\"sec-grid\" style=\"margin-top:56px\"><article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-shield\"\/><\/svg><\/div><h3>Narz\u0119dzia do RODO w programie<\/h3><ul><li>Kopia danych osoby (art. 15 RODO) jednym przyciskiem<\/li><li>Anonimizacja konta (art. 17 RODO) z zachowaniem dokumentacji rob\u00f3t<\/li><li>Automatyczne czyszczenie danych technicznych po ustawionym okresie<\/li><li>Wbudowana w program informacja o przetwarzaniu danych dla pracownik\u00f3w<\/li><\/ul><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-bell\"\/><\/svg><\/div><h3>Powiadomienia szyfrowane<\/h3><ul><li>Tre\u015b\u0107 powiadomienia jest szyfrowana kluczem telefonu, zanim opu\u015bci serwer<\/li><li>Us\u0142uga producenta przegl\u0105darki przekazuje wiadomo\u015b\u0107, ale jej nie odczyta<\/li><li>Serwer wysy\u0142a je wy\u0142\u0105cznie na adresy znanych us\u0142ug<\/li><\/ul><\/article>\n<article class=\"card\"><div class=\"ico\"><svg class=\"i\" aria-hidden=\"true\"><use href=\"#i-server\"\/><\/svg><\/div><h3>Kopie zapasowe i aktualizacje pod kontrol\u0105<\/h3><ul><li>Codzienna kopia bazy danych (ustawiana przy wdro\u017ceniu) i automatyczna kopia przed ka\u017cd\u0105 aktualizacj\u0105<\/li><li>Aktualizacj\u0119 uruchamiasz Ty, kiedy chcesz<\/li><li>Mo\u017cliwo\u015b\u0107 powrotu do poprzedniej wersji programu<\/li><\/ul><\/article><\/div>\n<p class=\"sec-note\"><b>Szczerze o bezpiecze\u0144stwie:<\/b> \u017caden system nie jest w stu procentach odporny na ataki, dlatego licz\u0105 si\u0119 warstwy: kontrola dost\u0119pu, szyfrowanie, niezmienna historia zdarze\u0144 i sprawdzone kopie zapasowe. Zgodno\u015b\u0107 z RODO zale\u017cy te\u017c od procedur w firmie; w dokumentacji programu opisuj\u0119, co robi program, a co zostaje po stronie firmy.<\/p>\n<\/div><\/section>\n<section class=\"sec sec-alt\" id=\"wdrozenie\" aria-labelledby=\"h-dep\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Wdro\u017cenie<\/p><h2 id=\"h-dep\">Prosty start, spokojna codzienno\u015b\u0107<\/h2><\/div>\n<div class=\"cards3\">\n<div class=\"card\"><h3>Na Twoim sprz\u0119cie<\/h3><p>Program dzia\u0142a jako zestaw kontener\u00f3w na zwyk\u0142ym serwerze: na przyk\u0142ad na NAS-ie Synology lub na wynaj\u0119tym VPS-ie. Nie potrzebujesz w\u0142asnej serwerowni.<\/p><\/div>\n<div class=\"card\"><h3>Zacznij od jednej budowy<\/h3><p>Zalecam zacz\u0105\u0107 od jednej budowy, jednego kierownika, jednego brygadzisty i kilku pracownik\u00f3w. Wystarczy 30 minut szkolenia na telefonach, \u017ceby zacz\u0105\u0107 prac\u0119.<\/p><\/div>\n<div class=\"card\"><h3>Instrukcje w komplecie<\/h3><p>Instrukcja ze zrzutami ekranu dla ka\u017cdej roli jest w programie (zak\u0142adka Pomoc) i jako PDF do wydruku. Do tego przewodnik \u201ePierwsze kroki\u201d dla osoby wdra\u017caj\u0105cej.<\/p><\/div>\n<\/div><\/div><\/section>\n<section class=\"sec\" id=\"pytania\" aria-labelledby=\"h-faq\"><div class=\"wrap\">\n<div class=\"sec-head center\"><p class=\"kicker mono\">Pytania<\/p><h2 id=\"h-faq\">Najcz\u0119stsze pytania<\/h2><\/div>\n<div class=\"faq\"><details><summary>Czy pracownicy musz\u0105 instalowa\u0107 aplikacj\u0119 ze sklepu?<\/summary><p>Nie. Otwieraj\u0105 adres programu w przegl\u0105darce telefonu i dodaj\u0105 ikon\u0119 do ekranu g\u0142\u00f3wnego (Android: \u201eZainstaluj aplikacj\u0119\u201d, iPhone: \u201eDo ekranu pocz\u0105tkowego\u201d). Od tej pory program otwiera si\u0119 z ikony jak zwyk\u0142a aplikacja. Na iPhonie (iOS 16.4 lub nowszy) powiadomienia dzia\u0142aj\u0105 w\u0142a\u015bnie po dodaniu ikony do ekranu pocz\u0105tkowego.<\/p><\/details>\n<details><summary>Gdzie s\u0105 przechowywane moje dane?<\/summary><p>Na serwerze, kt\u00f3ry wska\u017cesz. Nie przekazuj\u0119 ich do zewn\u0119trznej chmury. Z us\u0142ug zewn\u0119trznych korzystaj\u0105 tylko dwie rzeczy, opisane w informacji o przetwarzaniu danych w programie: zaszyfrowane powiadomienia na telefon (przechodz\u0105 przez us\u0142ug\u0119 producenta przegl\u0105darki) oraz otwarcie mapy po dotkni\u0119ciu \u201eNawiguj\u201d.<\/p><\/details>\n<details><summary>Czy program dzia\u0142a bez internetu?<\/summary><p>Nie, potrzebny jest zasi\u0119g telefonu. Program nie dzia\u0142a w trybie offline, wi\u0119c na budowach bez zasi\u0119gu zadania warto uzupe\u0142ni\u0107 po powrocie w miejsce z zasi\u0119giem.<\/p><\/details>\n<details><summary>Czy program jest zgodny z RODO?<\/summary><p>Program ma narz\u0119dzia, kt\u00f3re to u\u0142atwiaj\u0105: eksport danych osoby, anonimizacj\u0119 konta, okresy przechowywania danych, usuwanie danych lokalizacji ze zdj\u0119\u0107, informacj\u0119 o przetwarzaniu dla pracownik\u00f3w i dziennik zdarze\u0144. Pe\u0142na zgodno\u015b\u0107 zale\u017cy jednak tak\u017ce od procedur firmy; w dokumentacji opisuj\u0119, co robi program, a co zostaje po stronie firmy.<\/p><\/details>\n<details><summary>Co si\u0119 stanie, gdy pracownik odejdzie z firmy?<\/summary><p>Dezaktywujesz konto tego samego dnia. Dost\u0119p znika od razu, a historia pracy tej osoby zostaje. Je\u015bli osoba za\u017c\u0105da usuni\u0119cia danych, mo\u017cesz zanonimizowa\u0107 konto; dokumentacja rob\u00f3t pozostaje bez danych identyfikuj\u0105cych.<\/p><\/details>\n<details><summary>Czy to kompletny system do zarz\u0105dzania firm\u0105?<\/summary><p>Nie, i to \u015bwiadomie. Program porz\u0105dkuje zadania, ekipy, zdj\u0119cia i raporty. Nie prowadzi magazynu, zam\u00f3wie\u0144 ani koszt\u00f3w i nie rozsy\u0142a SMS-\u00f3w. Dzi\u0119ki temu jest prosty i \u0142atwo si\u0119 go nauczy\u0107.<\/p><\/details>\n<details><summary>Kto decyduje o aktualizacjach?<\/summary><p>Ty. Nowa wersja instaluje si\u0119 dopiero wtedy, gdy uruchomisz aktualizacj\u0119; przed ni\u0105 program robi kopi\u0119 bazy, a w razie problem\u00f3w mo\u017cna wr\u00f3ci\u0107 do poprzedniej wersji.<\/p><\/details><\/div>\n<\/div><\/section>\n<section class=\"sec\" id=\"kontakt\" aria-labelledby=\"h-cta\" style=\"padding-top:0\"><div class=\"wrap\"><div class=\"cta\">\n<h2 id=\"h-cta\">Zobacz Budowy w dzia\u0142aniu<\/h2>\n<p class=\"lead\">Poka\u017c\u0119 program na przyk\u0142adowej budowie i odpowiem na pytania o bezpiecze\u0144stwo, wdro\u017cenie i koszty.<\/p>\n<div class=\"cta-row\"><a class=\"btn btn-primary\" href=\"#kontakt\" data-e=\"hcet.ikswohceicjow@zsuetam\" data-s=\"Prezentacja programu Budowy\">Napisz do mnie<\/a><a class=\"btn btn-ghost\" href=\"tel:+48510900597\">Zadzwo\u0144 510 900 597<\/a><\/div>\n<\/div><\/div><\/section>\n<\/main>\n<footer class=\"foot\"><div class=\"wrap\"><span>\u00a9 2026 Mateusz Wojciechowski \u00b7 wojciechowski.tech<\/span><span>Budowy: program do zarz\u0105dzania zadaniami na budowach. Podgl\u0105dy ekran\u00f3w przedstawiaj\u0105 fikcyjne dane. <a href=\"\/#portfolio\">\u2190 Portfolio<\/a><\/span><\/div><\/footer>\n<script>\n(function () {\nvar nodes = document.querySelectorAll('#mw-top [data-e]');\nfor (var i = 0; i < nodes.length; i++) {\nvar a = nodes[i];\nvar addr = a.getAttribute('data-e').split('').reverse().join('');\nvar subj = a.getAttribute('data-s') || 'Zapytanie ze strony wojciechowski.tech';\na.href = 'mailto:' + addr + '?subject=' + encodeURIComponent(subj);\na.removeAttribute('data-e');\n}\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>MWMateusz Wojciechowski \u2190 PortfolioFunkcjeBezpiecze\u0144stwoWdro\u017ceniePytania Um\u00f3w prezentacj\u0119 \u2190 Portfolio \u00b7 Program 1 \/\/ program do zarz\u0105dzania zadaniami na budowach Wiesz, co dzieje si\u0119 na ka\u017cdej budowie. Bez dzwonienia i bez kartek. Zlecasz zadanie, ekipa odhacza je w telefonie i dokumentuje zdj\u0119ciem, a Ty zatwierdzasz wykonanie. Wszystko [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-60","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/pages\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/comments?post=60"}],"version-history":[{"count":4,"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/pages\/60\/revisions"}],"predecessor-version":[{"id":65,"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/pages\/60\/revisions\/65"}],"wp:attachment":[{"href":"https:\/\/wojciechowski.tech\/index.php\/wp-json\/wp\/v2\/media?parent=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}