diff --git a/projects/utils/src/lib/permalink.ts b/projects/utils/src/lib/permalink.ts
index 3f48adb9..461fad43 100644
--- a/projects/utils/src/lib/permalink.ts
+++ b/projects/utils/src/lib/permalink.ts
@@ -1,19 +1,20 @@
 export function getPermalink(
   title: string,
+  specialCategory: boolean,
+  category: string,
   date?: string,
-  category?: string
 ): string {
-  const base = generateBase(date, category);
+  const base = specialCategory ? category : generateBase(date);
   const titleDirectoryName = toKebabCase(title);
   return `${base}/${titleDirectoryName}`;
 }
 
-function generateBase(date?: string, category?: string): string {
+function generateBase(date?: string): string {
   if (date && !isNaN(Date.parse(date))) {
     const parsedDate = new Date(date);
     return parsedDate.toISOString().split('T')[0].replace(/-/g, '/');
   }
-  return category ?? 'unpublished';
+  return 'unpublished';
 }
 
 function toKebabCase(str: string): string {
diff --git a/src/app/core/model/categories.model.ts b/src/app/core/model/categories.model.ts
index 279f7777..3e9196c1 100644
--- a/src/app/core/model/categories.model.ts
+++ b/src/app/core/model/categories.model.ts
@@ -9,3 +9,7 @@ export enum Category {
   'qa' = 'Quality Assurance',
   'mobile' = 'Mobile',
 }
+
+export const SpecialCategories = [
+  'principles',
+];
diff --git a/src/app/core/model/post.model.ts b/src/app/core/model/post.model.ts
index 8f0ca0ac..6434165e 100644
--- a/src/app/core/model/post.model.ts
+++ b/src/app/core/model/post.model.ts
@@ -11,6 +11,7 @@ export interface Post {
   category: Category;
   tags: string[];
   readingTime: string;
+  specialCategory: boolean;
 }
 
 export interface Posts {
diff --git a/src/app/core/services/posts.service.ts b/src/app/core/services/posts.service.ts
index 3e65ddbb..375cb524 100644
--- a/src/app/core/services/posts.service.ts
+++ b/src/app/core/services/posts.service.ts
@@ -4,7 +4,7 @@ import { Post, Posts } from '../model/post.model';
 import { HttpClient } from '@angular/common/http';
 import { getPermalink } from '@blog/utils';
 import { AuthorsService } from './authors.service';
-import { Category } from '../model/categories.model';
+import { Category, SpecialCategories } from '../model/categories.model';
 
 const POSTS_PER_PAGE = 8;
 
@@ -14,7 +14,14 @@ const POSTS_PER_PAGE = 8;
 export class PostsService {
   private cached: Observable<Post[]> = this.httpClient
     .get<Post[]>('posts.json')
-    .pipe(shareReplay());
+    .pipe(
+      map((posts) => posts.map((post) => ({
+        ...post,
+        specialCategory: SpecialCategories.includes(post.category),
+        date: post.date?.match(/^\d{4}-\d{2}-\d{2}/) ? post.date : undefined,
+      }))),
+      shareReplay()
+    );
 
   constructor(
     private httpClient: HttpClient,
@@ -30,7 +37,7 @@ export class PostsService {
       map(
         posts =>
           posts.find(({ featured }) => featured) ??
-          posts.find(({ date }) => !!date)
+          posts.find(({ category }) => !SpecialCategories.includes(category))
       )
     );
   }
@@ -77,7 +84,7 @@ export class PostsService {
 
   getPost(permalink: string | null): Observable<Post | undefined> {
     const filterByPermalink = (post: Post) =>
-      getPermalink(post.title, post.date, post.category) === permalink;
+      getPermalink(post.title, post.specialCategory, post.category, post.date) === permalink;
     return this.getPosts(0, 1, false, (post: Post) =>
       filterByPermalink(post)
     ).pipe(map(({ posts }) => posts[0]));
diff --git a/src/app/core/utils/post-url.pipe.ts b/src/app/core/utils/post-url.pipe.ts
index 7fc7284a..f16cded0 100644
--- a/src/app/core/utils/post-url.pipe.ts
+++ b/src/app/core/utils/post-url.pipe.ts
@@ -8,7 +8,7 @@ import { getPermalink } from '@blog/utils';
 })
 export class PostUrlPipe implements PipeTransform {
   transform(post: Post, content?: string): string {
-    const postUrl = getPermalink(post.title, post.date, post.category);
+    const postUrl = getPermalink(post.title, post.specialCategory, post.category, post.date);
 
     if (content) {
       return `${postUrl}/${content}`;
diff --git a/src/app/features/search/search.component.ts b/src/app/features/search/search.component.ts
index db845f8a..d6755dee 100644
--- a/src/app/features/search/search.component.ts
+++ b/src/app/features/search/search.component.ts
@@ -61,7 +61,7 @@ export class SearchComponent implements OnInit {
   goToPost(event: MatAutocompleteSelectedEvent) {
     const post: Post = event.option.value;
     this.router.navigateByUrl(
-      getPermalink(post.title, post.date, post.category)
+      getPermalink(post.title, post.specialCategory, post.category, post.date)
     );
     this.control.setValue('');
     this.complete.emit();
diff --git a/tools/post-scaffolder/src/post-scaffolder/index.ts b/tools/post-scaffolder/src/post-scaffolder/index.ts
index e57000d9..93aaab45 100644
--- a/tools/post-scaffolder/src/post-scaffolder/index.ts
+++ b/tools/post-scaffolder/src/post-scaffolder/index.ts
@@ -23,7 +23,7 @@ export function postScaffolder(options: any): Rule {
         ...options,
         stringify,
       }),
-      move(normalize(`content/posts/${getPermalink(options.title, 'unpublished')}`)),
+      move(normalize(`content/posts/${getPermalink(options.title, false, '', undefined)}`)),
     ]);
 
     const rule = mergeWith(templateSource, MergeStrategy.Default);
diff --git a/tools/publish/index.js b/tools/publish/index.js
index fd60ae93..7a81276f 100644
--- a/tools/publish/index.js
+++ b/tools/publish/index.js
@@ -46,8 +46,9 @@ async function moveUnpublishedDirectory(sourcePath, destinationRoot) {
         destinationRoot,
         utils.getPermalink(
           metaJsonObject.title,
+          false,
+          metaJsonObject.category,
           metaJsonObject.date,
-          metaJsonObject.category
         )
       );
 
