[{"data":1,"prerenderedAt":343},["ShallowReactive",2],{"case:\u002Faabenintra":3},{"id":4,"title":5,"body":6,"cta":321,"description":330,"extension":331,"facts":332,"footnote":333,"kicker":334,"lede":335,"meta":336,"navigation":337,"path":338,"product":339,"seo":340,"stem":341,"__hash__":342},"content_en\u002Faabenintra.md","An intranet people actually open",{"type":7,"value":8,"toc":311},"minimark",[9,14,19,26,37,46,54,57,61,66,74,114,122,130,133,137,140,143,146,154,192,198,201,204,208,211,214,218,224,227,253,259,262,265,269,274],[10,11],"margin-note",{"term":12,"tone":13},"The interface","ash",[15,16,18],"h2",{"id":17},"personal-for-the-individual-structured-for-the-organisation","Personal for the individual. Structured for the organisation.",[20,21,22],"lede",{},[23,24,25],"p",{},"The front page is not the same for everyone. Content surfaces by department, by position in the organisation, and by the channels a person chooses to follow. Order, accent colour and density are each employee's own.",[27,28,34],"case-figure",{"alt":29,"height":30,"src":31,"src2x":32,"width":33},"AabenIntra dashboard with a personal greeting, large and small content tiles with photography, and colour-coded department chips.",833,"\u002Fmedia\u002Faabenintra\u002Fdashboard.webp","\u002Fmedia\u002Faabenintra\u002Fdashboard@2x.webp",960,[23,35,36],{},"The dashboard. Tile sizing is resolved server side, and the order is the employee's own.",[27,38,43],{"alt":39,"height":40,"src":41,"src2x":42,"width":33},"News listing in Danish covering budget, Aula rollout, winter service and MitID Erhverv.",667,"\u002Fmedia\u002Faabenintra\u002Fnews.webp","\u002Fmedia\u002Faabenintra\u002Fnews@2x.webp",[23,44,45],{},"News in Danish. The same content, translated, not a separate installation.",[27,47,51],{"alt":48,"height":40,"src":49,"src2x":50,"width":33},"Employee directory with photographs, job titles, units and skills.","\u002Fmedia\u002Faabenintra\u002Fdirectory.webp","\u002Fmedia\u002Faabenintra\u002Fdirectory@2x.webp",[23,52,53],{},"Directory, filterable by name, title, unit, location and skill.",[10,55],{"term":56,"tone":13},"Culture",[15,58,60],{"id":59},"an-intranet-builds-culture-or-it-is-just-a-file-server","An intranet builds culture, or it is just a file server",[20,62,63],{},[23,64,65],{},"Most intranets do not fail technically. They fail because nobody has a reason to open them. AabenIntra is built around the opposite premise: make colleagues' work visible.",[27,67,71],{"alt":68,"height":40,"src":69,"src2x":70,"width":33},"Recognition wall showing who recognised whom, with badges such as Teamwork, Innovation and Leadership.","\u002Fmedia\u002Faabenintra\u002Frecognition.webp","\u002Fmedia\u002Faabenintra\u002Frecognition@2x.webp",[23,72,73],{},"The recognition wall. Named badges, a concrete reason, and who gave it.",[75,76,77,84,90,96,102,108],"rows",{},[78,79,81],"row",{"term":80},"Recognition with substance",[23,82,83],{},"A kudos has a recipient, a badge and a reason. Not a like, but a sentence about what the colleague actually did. That is the difference between recognition someone remembers and a notification they dismiss.",[78,85,87],{"term":86},"An activity stream that shows contribution",[23,88,89],{},"Every publication, comment and recognition is logged at write time. New starters can see who contributes where instead of guessing.",[78,91,93],{"term":92},"Channels people choose",[23,94,95],{},"Employees follow the topics relevant to them, so the news stream becomes something they opted into rather than something broadcast at them.",[78,97,99],{"term":98},"Communities of practice",[23,100,101],{},"Community is its own group type, not a renamed team. Built for networks across departments, with open, closed or secret visibility.",[78,103,105],{"term":104},"Knowledge sharing in small pieces",[23,106,107],{},"Tips are shared by category: how-to, best practice, troubleshooting. A lower barrier than a document, and easier to find again.",[78,109,111],{"term":110},"Find an expert",[23,112,113],{},"Search by skill rather than by name. Useful precisely when you do not know who to ask.",[27,115,119],{"alt":116,"height":30,"src":117,"src2x":118,"width":33},"Activity stream listing publications, comments and recognitions in chronological order.","\u002Fmedia\u002Faabenintra\u002Factivity.webp","\u002Fmedia\u002Faabenintra\u002Factivity@2x.webp",[23,120,121],{},"Activity, scoped by organisation, groups and followed channels.",[27,123,127],{"alt":124,"height":40,"src":125,"src2x":126,"width":33},"Expert finder where colleagues are located by skill tag.","\u002Fmedia\u002Faabenintra\u002Fexperts.webp","\u002Fmedia\u002Faabenintra\u002Fexperts@2x.webp",[23,128,129],{},"Expert finder, by skill.",[10,131],{"term":132,"tone":13},"Under the bonnet",[15,134,136],{"id":135},"the-organisation-is-not-a-field-it-is-a-structure","The organisation is not a field. It is a structure.",[23,138,139],{},"Most intranets treat department as a tag. Here the organisation is a hierarchy and visibility inherits downward. If Digitalisering writes to the whole municipality, everyone sees it. If they write to their own unit, they do not.",[23,141,142],{},"That same lineage drives the dashboard, the news stream and the activity log. One concept, three places, in a single query. It is why targeting does not cost performance.",[23,144,145],{},"The activity log is written at write time behind a unique key, so hooks and rebuilds cannot produce duplicates. Personalisation stays cacheable because preferences are expressed as cache contexts rather than by switching caching off.",[27,147,151],{"alt":148,"height":40,"src":149,"src2x":150,"width":33},"Organisation chart for Aabenby Kommune showing units and headcounts.","\u002Fmedia\u002Faabenintra\u002Forgchart.webp","\u002Fmedia\u002Faabenintra\u002Forgchart@2x.webp",[23,152,153],{},"Org chart with live headcounts.",[75,155,156,162,168,174,180,186],{},[78,157,159],{"term":158},"Platform",[23,160,161],{},"Drupal 11.3",[78,163,165],{"term":164},"Custom modules",[23,166,167],{},"11",[78,169,171],{"term":170},"Contrib dependencies",[23,172,173],{},"13",[78,175,177],{"term":176},"Provisioning",[23,178,179],{},"Drupal Recipes",[78,181,183],{"term":182},"Languages",[23,184,185],{},"Danish and English",[78,187,189],{"term":188},"Licence",[23,190,191],{},"Open source",[10,193,195],{"term":194},"A deliberate choice",[23,196,197],{},"Only 13 contrib modules. Every module is something to update, patch and test on each Drupal release.",[23,199,200],{},"A thin dependency surface is not a limitation, it is what makes a fixed monthly maintenance price realistic.",[10,202],{"term":203,"tone":13},"Compliance",[15,205,207],{"id":206},"mandatory-reading-with-receipts","Mandatory reading with receipts",[23,209,210],{},"Policies can be marked mandatory. The employee acknowledges, the receipt is stored, and HR can export a report as CSV. This is the sort of thing that otherwise lives in a spreadsheet beside the intranet.",[10,212],{"term":213,"tone":13},"Running it",[15,215,217],{"id":216},"a-fixed-price-so-the-budget-is-known","A fixed price, so the budget is known",[219,220,221],"fact",{},[23,222,223],{},"7,500 DKK a month, baseline.",[23,225,226],{},"Onboarding and training are agreed separately at the start. That is also when the operational layer is stood up for your installation.",[75,228,229,235,241,247],{},[78,230,232],{"term":231},"Hosting, updates, backups and monitoring",[23,233,234],{},"Hosting on European infrastructure, security updates for Drupal core and modules, daily backups with a tested restore, and monitoring with alerting.",[78,236,238],{"term":237},"Support with response times",[23,239,240],{},"A named contact. Critical issues within four business hours, everything else within two business days.",[78,242,244],{"term":243},"An included change budget",[23,245,246],{},"A fixed number of hours each month for new sections, content structure and small features. A retainer should feel like progress, not insurance.",[78,248,250],{"term":249},"Onboarding and training",[23,251,252],{},"Setup, content migration and training for your editors.",[10,254,256],{"term":255},"Worth knowing",[23,257,258],{},"Backups with a tested restore and monitoring are established for your installation as part of onboarding.",[23,260,261],{},"They do not exist as a finished service on the demo instance today, and that is precisely part of what the onboarding covers.",[10,263],{"term":264},"Honest status",[15,266,268],{"id":267},"what-runs-today-and-what-does-not","What runs today, and what does not",[20,270,271],{},[23,272,273],{},"This is a proof of concept with a public demo. Everything below is built and can be seen. What is not built is stated too.",[275,276,277,285,292,299,305],"status-list",{},[278,279,282],"status-item",{"label":280,"state":281},"Built","done",[23,283,284],{},"Dashboard, news, channels, directory, org chart, expert finder, kudos, activity stream, comments and reactions, groups, mandatory reading with CSV export, Danish and English.",[278,286,289],{"label":287,"state":288},"Not built","missing",[23,290,291],{},"Search beyond Drupal core. No notifications, calendar or surveys.",[278,293,296],{"label":294,"state":295},"Not evidenced","partial",[23,297,298],{},"Accessibility. The markup follows good practice, but no audit has been run. EN 301 549 is a legal requirement for public bodies, so an axe-based CI gate and an accessibility statement belong in a pilot. We already do exactly that on AabenForms.",[278,300,302],{"label":301,"state":295},"One installation",[23,303,304],{},"Multi-tenancy is designed as one container per customer. One runs today, and per-customer branding is not built yet.",[278,306,308],{"label":307,"state":295},"Demo data",[23,309,310],{},"The public demo is seeded with invented content from a fictional Aabenby Kommune. That is deliberate, so you can see it as it looks in use.",{"title":312,"searchDepth":313,"depth":313,"links":314},"",2,[315,316,317,318,319,320],{"id":17,"depth":313,"text":18},{"id":59,"depth":313,"text":60},{"id":135,"depth":313,"text":136},{"id":206,"depth":313,"text":207},{"id":216,"depth":313,"text":217},{"id":267,"depth":313,"text":268},{"heading":322,"lede":323,"primary":324,"secondary":327},"Try the demo, or book a walkthrough","The demo is open. It shows the product as it is today, not a prototype of something that might arrive.",{"label":325,"href":326},"See the live demo","https:\u002F\u002Faabenintra.fenixnordic.solutions\u002F",{"label":328,"href":329},"Book a walkthrough","\u002F#contact","AabenIntra: an open source intranet on Drupal 11. Personal dashboard, targeted news, employee directory and a recognition wall. Danish and English. From 7,500 DKK a month.","md","Eleven custom modules, thirteen contrib dependencies, two languages built in. From 7,500 DKK a month, baseline.","AabenIntra by Fenix Nordic Solutions. Screenshots are from the running installation, July 2026.","Intranet for municipalities and organisations","AabenIntra is an open source intranet built on Drupal 11. A personal dashboard, targeted news, an employee directory with real organisational structure, and a recognition wall that makes colleagues' work visible. Danish and English from day one.",{},true,"\u002Faabenintra","AabenIntra",{"title":5,"description":330},"aabenintra","q9J6Qjf74r3tRauwO-7BDWIToU3MUw8tQ8WscWJQaUA",1792178152517]