Last modified by Agnease on 2026/05/25 12:55

Hide last authors
Agnease 1.2 1 {{velocity}}
2 #set ($discard = $xwiki.ssx.use('PublicWebSite.WebHome'))
3 {{html clean="false"}}
4 ## PAGE HEADER
5 <section class="hero hero-centered service-hero" aria-labelledby="hero-title">
6 <div class="container hero-inner">
7 <div class="hero-kicker">
8 <i class="fa fa-cogs" aria-hidden="true"></i>
9 XWiki development and integrations
10 </div>
11 <h1 id="hero-title">Custom XWiki applications, workflows and integrations</h1>
12 <p class="lead">
Agnease 7.3 13 Extend XWiki beyond documentation with custom applications, structured data, workflows,
14 dashboards, automation and integrations adapted to your organization.
Agnease 1.2 15 </p>
16 <div class="hero-actions">
17 <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Discuss a project</a>
18 <a class="btn btn-secondary" href="#development-process">See the development approach</a>
19 </div>
20 </div>
21 </section>
22
23 ## WHY CUSTOM DEVELOPMENT
Agnease 7.5 24 #set ($developmentReasonItems = [{
25 'title': 'Structure your information',
26 'icon': 'database',
27 'content': 'Use XWiki classes, forms, templates and metadata to organize business information in a maintainable way.',
28 'items': [
29 'Custom data models',
30 'Structured forms and templates',
31 'Metadata-driven pages and views'
32 ]
33 },{
34 'title': 'Automate workflows',
35 'icon': 'random',
36 'content': 'Support approvals, reviews, notifications, status changes and controlled document lifecycles directly in XWiki.',
37 'items': [
38 'Review and approval workflows',
39 'Role-based actions and permissions',
40 'Notifications and task queues'
41 ]
42 },{
43 'title': 'Connect external systems',
44 'icon': 'plug',
45 'content': 'Integrate XWiki with authentication systems, APIs, AI tools, internal services and external platforms.',
46 'items': [
47 'REST API integrations',
48 'SSO, LDAP and identity systems',
49 'AI-assisted search and knowledge access'
50 ]
51 }])
52
Agnease 1.2 53 <section aria-labelledby="why-development-title">
54 <div class="container">
55 <h2 id="why-development-title">When XWiki needs to fit your business</h2>
56 <p class="section-intro">
57 XWiki is flexible enough to become much more than a documentation system. With the right structure,
58 custom applications and integrations, it can support internal processes that would otherwise be handled
59 through spreadsheets, scattered documents, manual approvals or disconnected tools.
60 </p>
61 <div class="pathways">
Agnease 7.5 62 #foreach ($entry in $developmentReasonItems)
63 <article class="pathway-card">
64 <div class="card-heading">
65 <div class="pathway-icon">
66 <i class="fa fa-$entry.icon" aria-hidden="true"></i>
67 </div>
68 <h3>$entry.title</h3>
69 </div>
70 <p>$entry.content</p>
71 <ul>
72 #foreach ($item in $entry.items)
73 <li>$item</li>
74 #end
75 </ul>
76 </article>
77 #end
Agnease 1.2 78 </div>
79 </div>
80 </section>
81
82 ## COMMON DEVELOPMENT NEEDS
Agnease 7.6 83 #set ($developmentNeedItems = [{
84 'title': 'Custom XWiki applications',
85 'icon': 'window-restore',
86 'content': 'Business-specific applications using XWiki classes, sheets, templates, UI extensions, scripts and components.'
87 },{
88 'title': 'Workflows and approvals',
89 'icon': 'check-square-o',
90 'content': 'Review, approval, publishing, document control and status-based processes adapted to your internal rules.'
91 },{
92 'title': 'Dashboards and structured views',
93 'icon': 'table',
94 'content': 'LiveData views, filters, reports, queues and dashboards that make structured XWiki information easier to use.'
95 },{
96 'title': 'PDF export and document outputs',
97 'icon': 'file-pdf-o',
98 'content': 'Custom export templates, generated documents, controlled output formats and PDF-related workflow features.'
99 },{
100 'title': 'External and AI integrations',
101 'icon': 'plug',
102 'content': 'Integration with REST APIs, authentication systems, internal services, automation tools, AI assistants or third-party platforms.'
103 },{
104 'title': 'Macros, components and extensions',
105 'icon': 'code',
106 'content': 'Custom macros, Java components, Velocity scripts, UI extensions and packaged XWiki extensions.'
107 }])
108
Agnease 1.2 109 <section class="services" aria-labelledby="development-needs-title">
110 <div class="container">
111 <h2 id="development-needs-title">Common development needs</h2>
112 <p class="section-intro">
113 Custom XWiki development can range from small improvements to full business applications built on top of
114 the platform. The focus is to keep the implementation useful, maintainable and aligned with XWiki conventions.
Agnease 1.9 115 This can also include AI-assisted knowledge access, where selected XWiki content is synchronized with external
116 AI tools for question answering and discovery.
Agnease 1.2 117 </p>
118 <div class="services-grid">
Agnease 7.6 119 #foreach ($entry in $developmentNeedItems)
120 <article class="service">
121 <div class="service-icon" aria-hidden="true">
122 <i class="fa fa-$entry.icon"></i>
123 </div>
Agnease 1.2 124
Agnease 7.6 125 <div class="service-body">
126 <h4>$entry.title</h4>
127 <p>$entry.content</p>
128 </div>
129 </article>
130 #end
Agnease 1.2 131 </div>
132 </div>
133 </section>
134
135 ## DEVELOPMENT APPROACH
Agnease 7.6 136 #set ($developmentProcessItems = [{
137 'title': 'Understand the business process',
138 'content': 'Clarify users, roles, data, statuses, permissions, outputs, notifications and expected decisions.'
139 },{
140 'title': 'Design the XWiki model',
141 'content': 'Define the right structure using pages, spaces, XClasses, templates, sheets, rights and views.'
142 },{
143 'title': 'Choose the implementation level',
144 'content': 'Decide whether the feature should be built with configuration, scripting, Java components or a packaged extension.'
145 },{
146 'title': 'Build and validate iteratively',
147 'content': 'Implement the feature in manageable steps and validate it with real usage scenarios.'
148 },{
149 'title': 'Document and prepare for maintenance',
150 'content': 'Leave clear notes about configuration, custom code, assumptions and future improvement areas.'
151 }])
Agnease 1.2 152 <section id="development-process" class="split-section" aria-labelledby="process-title">
153 <div class="container">
154 <div class="split-grid">
155 <div class="split-copy">
156 <h2 id="process-title">A practical development approach</h2>
157 <p>
158 XWiki development works best when the solution fits the platform instead of fighting it. The goal is
159 to build features that are useful for business users while remaining understandable, maintainable and
160 compatible with future upgrades.
161 </p>
162 <p>
163 Development can start with a small improvement, a prototype or a full application. The important part is
164 to clarify the business process, model the information correctly and choose the right technical level:
Agnease 1.8 165 configuration, scripting, extension development, external integration or AI-assisted knowledge access.
Agnease 1.2 166 </p>
167 </div>
168 <ol class="process-list">
Agnease 7.6 169 #foreach ($entry in $developmentProcessItems)
170 <li>
171 <strong>$entry.title</strong>
172 $entry.content
173 </li>
174 #end
Agnease 1.2 175 </ol>
176 </div>
177 </div>
178 </section>
179
180 ## EXAMPLE SOLUTIONS
Agnease 7.6 181 #set ($developmentExampleItems = [{
182 'title': 'SOP and document control',
183 'icon': 'file-text-o',
184 'content': 'Controlled documents with review, approval, publishing, revision tracking, PDF export and lifecycle management.'
185 },{
186 'title': 'Internal workflow applications',
187 'icon': 'tasks',
188 'content': 'Lightweight business applications for requests, approvals, registers, task queues and process tracking.'
189 },{
190 'title': 'Knowledge base structures',
191 'icon': 'sitemap',
192 'content': 'Templates, metadata, taxonomies, related articles and navigation structures for large knowledge bases.'
193 },{
194 'title': 'AI-assisted knowledge access',
195 'icon': 'comments-o',
196 'content': 'Integrations that feed selected XWiki content into AI knowledge tools, helping users ask questions and retrieve relevant information while XWiki remains the maintained source of truth.'
197 }])
Agnease 1.2 198 <section aria-labelledby="examples-title">
199 <div class="container">
200 <h2 id="examples-title">Example solutions</h2>
201 <p class="section-intro">
202 The same XWiki foundation can support different internal tools, depending on how your organization manages
203 knowledge, documents, processes and collaboration.
204 </p>
205 <div class="widgets">
Agnease 7.6 206 #foreach ($entry in $developmentExampleItems)
207 <article class="widget">
208 <div class="icon" aria-hidden="true">
209 <i class="fa fa-$entry.icon"></i>
210 <h4>$entry.title</h4>
211 </div>
212 <p>$entry.content</p>
213 </article>
214 #end
Agnease 1.2 215 </div>
216 </div>
217 </section>
218
219 ## RELATED SERVICES
Agnease 7.6 220 #set ($relatedDevelopmentServiceItems = [{
221 'title': 'XWiki Support & Maintenance',
222 'url': 'services.xwiki-maintenance-support',
223 'content': 'Ongoing technical care for production environments, including troubleshooting, maintenance planning and recovery support.',
224 'linkLabel': 'View support services'
225 },{
226 'title': 'XWiki Upgrade Services',
227 'url': 'services.xwiki-upgrades',
228 'content': 'Safe LTS upgrades with staging validation, compatibility checks, rollback planning and post-upgrade verification.',
229 'linkLabel': 'View upgrade services'
230 }])
231
Agnease 1.2 232 <section class="resource-strip" aria-labelledby="related-title">
233 <div class="container">
234 <h2 id="related-title">Related XWiki services</h2>
235
236 <p class="section-intro">
237 Development work often connects with support, upgrades, authentication and long-term maintainability.
238 </p>
239
240 <div class="resource-grid">
Agnease 7.6 241 #foreach ($entry in $relatedDevelopmentServiceItems)
242 <article class="resource-card">
243 <h4>$entry.title</h4>
244 <p>$entry.content</p>
245 <a href="$xwiki.getURL($entry.url)">$entry.linkLabel</a>
246 </article>
247 #end
Agnease 1.2 248 </div>
249 </div>
250 </section>
251
252 ## CTA
253 <section class="cta-section" aria-labelledby="cta-title">
254 <div class="container">
255 <div class="cta-panel">
256 <h2 id="cta-title">Need to build something in XWiki?</h2>
257
258 <p>
259 Send a short description of the process, workflow, integration or application you want to create.
260 A few details about users, data and expected outcomes are enough to start the conversation.
261 </p>
262
263 <a class="btn btn-primary" href="$xwiki.getURL('contact.WebHome')">Discuss a project</a>
264 </div>
265 </div>
266 </section>
267
268 {{/html}}
269 {{/velocity}}