Development

Vi er specialister i kode. Især i Umbraco CMS. Og vores seniorudviklere hos TYRA anstrenger sig for at skrive kode af høj kvalitet – leveret til tiden. 

Det er sjovest at kode, når det skaber forretning for dig

Hos GORM er vi specialister i mobil- og webudvikling. Vi omdanner forretningskritiske mål til kode – og den anden vej rundt! Det betyder at vi både taler flydende nørdsprog og menneskesprog, for vi forstår værdien af at bygge bro og forståelse mellem mennesker og teknologi. Det er definerende for, at udviklingsprocessen og det endelige produkt (og den følgende drift) forløber optimalt.

Processen er afgørende for, at I får det resultat I ønsker

Processen er ganske afgørende for, at dit udviklingsprojekt kommer godt i land. Hos GORM knokler vi for det gode samarbejde, og det er centralt for den gennemtænkte arbejdsproces – og ikke mindst den løsning, det hele drejer sig om.

Når du indgår et samarbejde med os, rådgiver vi dig og fører dig sikkert gennem en afprøvet og forfinet arbejdsproces. Det er lige fra de indledende brugerundersøgelser og -analyser, UX og wireframes til klikbare prototyper og endelig kode. Det sikrer, at vi bruger tid og ressourcer bedst muligt, og at vi sammen finder vej til den stærkeste løsning for jer.

Med andre ord: Du kan være tryg, fordi du som kunde bliver taget i hånden. I kraft af vores ekspertise og indsigt i din forretning, sørger vi for at alt af relevans bliver overvejet og at intet falder mellem to stole.

Vi arbejder indgående med at formulere en grundig kravsspecifikationen til websitet eller app'en, fordi det er vores fælles ståsted: Med en solid kravspecifikation ved hånden ved vi nemlig, hvornår vi er i mål, hvad der er aftalt og hvad vi i fremtiden kan føje til, når din forretning udvikler sig.

Læs også: Sådan arbejder vi med user experience

Skal du have nyt website – eller er det eksisterende blevet for komplekst?   

Vi er eksperter i at levere forretningskritiske løsninger, både apps og websites, der støtter op om de målsætninger, I har for jeres virksomhed. 

Vores primære fokus er at bygge helt nye løsninger fra bunden. Det er fx tilfældet, hvis du vælger at skifte CMS. I processen med at bygge et nyt website, anvender vi de mest velegnede værktøjer og sørger for at være på forkant, så vi eksempelvis har overvejet, hvor din forretning er på vej hen. Det betyder, at løsningen kan være fremtidssikret, hvis du ønsker det. På den måde får du mere værdi for pengene, så du ikke pludselig står med håret i postkassen.

Udover at arbejde på nye løsninger, overtager vi ofte eksisterende løsninger af høj kompleksitet. Det kan fx være en større virksomhed, hvor websitet er vokset uhensigtsmæssigt, uden at nogen har haft ansvar for at give knopskydningen retning, mening og begrænsning.

Det kalder på en solid proces og en stærk, problemløsende mentalitet at varetage og forstå. I de henseender har vi både mod og erfaring til at træde til, så det uoverskuelige igen bliver gennemskueligt, meningsfuldt og brugervenligt. 

Vi foretrækker det tætte samarbejde med dig, fordi det giver de bedste resultater 

Én ting er at forstå en API. Det er en helt anden sag at forstå den bagvedliggende forretningsmodel og organisationsstruktur, der ligger til grund for jeres specifikke behov.

Vi leverer de bedste resultater, når vi får lov at arbejde tæt sammen med jer. Det gør os i stand til at forstå jeres virkelighed – om så det er marketingchefen, it-chefen eller en tredje – på et andet niveau. 

Vi arbejder med mange forskellige kunder; fra brands, virksomheder og organisationer med fokus på en stærk digital profil til andre bureauer, der har brug for en teknologisk underleverandør eller medspiller. I kraft af vores andre kompetencer indenfor UX, content og conversion og tætte samarbejder har vi mulighed for at være dét kontaktpunkt, der er brug for.

Driften er lige så vigtig som udviklingen, selvom mange glemmer det

De fleste får hurtigt armene i vejret, røde kinder og masser af idéer, når noget helt nyt skal udvikles. Og det er naturligvis et fantastisk udgangspunkt! Men når udviklingen er til ende og dagligdagen begynder, så kan entusiasmen få trange kår. Og det er ærgerligt, for driften er mindst lige så vigtig som selve udviklingsprocessen. Driften fylder mest – det er jo, som nævnt, dagligdagen det drejer sig om.

Når vi har skabt en løsning sammen, så står vi hos GORM gerne for driften af den. Det er meget forskelligt, hvad behovet for optimering og fejlfinding er, efter endt udviklingsproces. Men alle platforme skal hostes og sikkerhedsopdateres. 

Vi sørger for, at den rette support altid er til stede og at du har mulighed for at kontakte os, hvis en kritisk situation opstår. Vi udarbejder en detaljeret supportaftale med dig, så du ved, hvilket serviceniveau du kan forvente. Med en service level agreement (SLA) ved hånden ved både du og vi, hvad vi helt konkret har aftalt. Det er en essentiel del af forventningsafstemningen, så vores samarbejde fortsætter godt.

Vi er specialister i Umbraco ... men vi kan meget mere end det

Vi har specialiserede kompetencer i Umbraco CMS. Vi er certificeret Umbraco Gold Partner, og det er jeres garanti for, at vi har styr på vores arbejde. Certificeringen vidner om, at du får kvalitetskode hver gang, du samarbejder med os. 

Vores ambition er kort og godt: Vi stræber efter – på hvert eneste projekt – at kombinere solid erfaring med modet til at gå helt nye veje. Det giver dig nemlig det bedst tænkelige resultat.

Fordelene er mange ved Umbraco; det er open source, det er sikkert, det er udbredt. Vi sværger imidlertid ikke kun til Umbraco. For os handler det om (for)målet før teknologien. Vi koder ofte og gerne i andre systemer og sprog, og vi leverer naturligvis fuld integration med tredjepartssystemer. 

Læs mere: Vi er specialister i Umbracoudvikling - med cases

Overvejer I at drifte gennem Umbraco Cloud?

Måske har du i dag et website i Umbraco CMS og overvejer, hvilke fordele Umbraco Cloud byder på. Vi anbefaler ofte Umbraco Cloud, fordi det leverer stabil performance og optimerer arbejdsprocessen mellem udviklere og contenthajer. Læs mere om vores kompentencer inden for Umbraco Cloud her:

Umbraco Cloud: Din genvej til sikker performance og et stabilt workflow

Umbraco Cloud: Sådan kommer du i gang

 

Har du konkrete projekter, du gerne vil vende eller spørgsmål til, hvordan et samarbejde med os kan se ud, så er du velkommen til at tage kontakt. Så tager vi en uformel snak om jeres behov, udfordringer og ønsker :)

System.Web.HttpException (0x80004005): Error executing child request for handler 'System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper'. ---> System.NullReferenceException: Unable to get Form with ID: 'a5d5e6ec-5803-4b18-83ae-0f7d7d8e30b3' off disk or from the cache. Check the file exists on disk
at Umbraco.Forms.Data.Storage.FormStorage.GetForm(Guid id)
at Umbraco.Forms.Web.Controllers.UmbracoFormsController.GetForm(Guid formId)
at Umbraco.Forms.Web.Controllers.UmbracoFormsController.GetFormModel(Guid formId, Nullable`1 recordId)
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.<>c__DisplayClass4.b__3()
at System.Web.Mvc.HttpHandlerUtil.ServerExecuteHttpHandlerWrapper.Wrap[TResult](Func`1 func)
at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)
at System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride)
at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage)
at System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm)
at System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter)
at System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper htmlHelper, String actionName, String controllerName, Object routeValues)
at ASP._Page_Views_Partials_Sections_FormSection_cshtml.Execute() in c:\inetpub\websites\agency_gorm_www\Views\Partials\Sections\FormSection.cshtml:line 51
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer)
at System.Web.Mvc.Html.PartialExtensions.Partial(HtmlHelper htmlHelper, String partialViewName, Object model, ViewDataDictionary viewData)
at ASP._Page_Views_SectionPage_cshtml.Execute() in c:\inetpub\websites\agency_gorm_www\Views\SectionPage.cshtml:line 21