Teknik 3.0

Hello all!

So you may have noticed a lull in features for the site in recent months. This is because I've been working on a new version of the site, written in .NET Core! Along with this, there are optimizations, new features, and bug fixes.

Let's take a look at what is coming!

New Authentication System

Our biggest overhaul is how Teknik's authentication system works. Teknik now can act as an identity provider (Both OAuth and OpenID Connect). This will allow better integration with 3rd party applications and scripts, as well make it super simple to integrate into additional services.

Due to this major change, the authentication method for accessing the API will change and the previous Basic Auth method will no longer work. There will be an updated help document to show how to interact with the auth system using your scripts and programs.

Expiring Uploads

This has been asked for quite awhile, and it's finally here! Just as with Pastes, you can now set your uploads to expire. This can either be set for your current session, or as a default setting. Uploads are also able to be modified after being uploaded to expire.

New Paste Syntax Engine

This includes adding line numbers, utilizing a javascript based library (prism) instead of the raw html being generated server side. As well, syntax highlighting is

Better Performance

With the update to .NET Core, comes performance improvements in just the framework, but also there are many improvements in the backend code to streamline the request pipeline.

Cross Platform Hosting

One of the biggest draws for people who want to host an instance of Teknik is that it was only usable on a Windows machine. Now with .NET Core, it can be hosted on *nix and Mac OS as well. Each service is also decoupled from the main core code so that you can either make another mail/git interface to hook into, or easily host those services elsewhere.

This, combined with the new identity server, you can run your own hosted version of Teknik, keeping the files and data on your system, while using our authentication. This would allow any Teknik use to utilize your service, but you would be in control of the data.

Easier Contribution

All of the client side code has been moved to be outside of the .NET code. It's managed using npm and gulp, which should hopefully allow better understanding and contributions from those not familiar with .NET. The HTML templates are still within the core code, but are fairly simple to understand.

Bug Fixes

There are many many bug fixes during the rewrite, as issues were found, and optimizations made.

So when is it coming?

It will be coming when it is damn well ready. Which hopefully will be soon! There will be an initial migration phase that will cause some downtime, especially to user registration/login. This is required to move all the existing accounts to the new authentication system.

What will break?

There will be some caveats with the change:

  • API Access Tokens will no longer work. You will need to update all of your scripts to utilize OAuth/OpenID Connect. This can be done by creating a client within your Teknik Developer Settings, and signing in through that via your script. We may bring back auth tokens in the future, but probably not initially.
  • Some pastes may not have the same syntax highlights as they initially were created with. The id's of the syntax languages will be changing, and not all will match the old ids.

Thank you all for your continued support, and I hope you will enjoy these new improvements! If you want to see the current progress, you can look at https://dev.teknik.io/, or if you want to contribute to the new version, you can make a PR to the core branch of the repository.