diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..c8ba6b7e027837b44409ca3c40c05b12ff361bab
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,5 @@
+/gitlab-projects.html
+/gitlab-projects.json
+/.idea
+/.idea/*
+.env
\ No newline at end of file
diff --git a/main.py b/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..531a010b6b65a43c793a16223899f9d08fb42c4c
--- /dev/null
+++ b/main.py
@@ -0,0 +1,152 @@
+# from re import I
+import gitlab
+import requests
+import json
+from json2html import *
+import argparse
+import os
+from dotenv import load_dotenv
+
+parser = argparse.ArgumentParser(description="Get Project, License and Owners from gitlab")
+
+parser.add_argument("--production", action='store_true', help="Use for Production")
+parser.add_argument("--developer", action='store_true', help="Use for Developer")
+args = parser.parse_args()
+
+load_dotenv()
+
+try:
+    if args.production:
+        token = os.getenv('PRODUCTION_TOKEN')
+        print('produkcyjny')
+        headers = {'PRIVATE-TOKEN': token}
+        gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token=token)
+        gl_user = 'https://gitlab.geant.org/api/v4/users'
+        gl_proj = 'https://gitlab.geant.org/api/v4/projects'
+        gl_license = 'repository/files/LICENSE?ref='
+        gl_branch = 'repository/branches'
+        projects = gl.projects.list(all=True)
+    elif args.developer:
+        token = os.getenv('DEVELOPER_TOKEN')
+        print('testowy')
+        headers = {'PRIVATE-TOKEN': token}
+        gl = gitlab.Gitlab(url='https://k8s-gitlab.software.geant.org', private_token=token)
+        gl_user = 'https://k8s-gitlab.software.geant.org/api/v4/users'
+        gl_proj = 'https://k8s-gitlab.software.geant.org/api/v4/projects'
+        gl_license = 'repository/files/LICENSE?ref='
+        gl_branch = 'repository/branches'
+        projects = gl.projects.list(all=True)
+    else:
+        print("No variable, exit")
+        exit()
+
+    # pobieranie listy projektów
+
+    # # testowe
+    # headers = {'PRIVATE-TOKEN': 'glpat-hQFB1vBzz9rQzq8wuhcG'}
+    # gl = gitlab.Gitlab(url='https://k8s-gitlab.software.geant.org', private_token='glpat-hQFB1vBzz9rQzq8wuhcG')
+    # gl_user = 'https://k8s-gitlab.software.geant.org/api/v4/users'
+    # gl_proj = 'https://k8s-gitlab.software.geant.org/api/v4/projects'
+    # gl_license = 'repository/files/LICENSE?ref='
+    # gl_branch = 'repository/branches'
+    # projects = gl.projects.list()
+    # # (all=True)
+
+
+    # produkcyjne
+    # headers = {'PRIVATE-TOKEN': 'glpat-P6orz6-t2f3n1BoVDrnr'}
+    # gl = gitlab.Gitlab(url='https://gitlab.geant.org', private_token='glpat-P6orz6-t2f3n1BoVDrnr')
+    # gl_user = 'https://gitlab.geant.org/api/v4/users'
+    # gl_proj = 'https://gitlab.geant.org/api/v4/projects'
+    # gl_license = 'repository/files/LICENSE?ref='
+    # gl_branch = 'repository/branches'
+    # projects = gl.projects.list(all=True)
+
+    j_project = {}
+    j_project['projects'] = {}
+    for project in projects:
+        # print('Project ID: ', project.attributes['id'])
+        # print('Project Name: ', project.attributes['name_with_namespace'])
+        # # print('branch', project.attributes['default_branch'])
+        # print('status', project.attributes['visibility'])
+        # print('aktywny', project.attributes['last_activity_at'])
+        # print('grupa', project.attributes['namespace']['name'])
+        x = project.attributes['id']
+        check_b = gl_proj + '/' + str(x)
+        check_b_response = requests.get(check_b, headers=headers)
+        check_b_data = check_b_response.text
+        check_b_answer = json.loads(check_b_data)
+        if "default_branch" in check_b_answer:
+            branch = project.attributes['default_branch']
+            # x = project.attributes['id']
+            c_link = gl_proj + '/' + str(x) + '/' + gl_license + branch
+            c_response = requests.get(c_link, headers=headers)
+            c_data = c_response.text
+            c_answer = json.loads(c_data)
+            if "message" in c_answer:
+                # print("License file: ", c_answer['message'])
+                lic = c_answer['message']
+            if "file_name" in c_answer:
+                # print("License file: ", c_answer['file_name'])
+                lic = c_answer['file_name']
+            # print('branch', project.attributes['default_branch'])
+        else:
+            lic = 'No created repository'
+        sep = 'T'
+        full_act = project.attributes['last_activity_at']
+        last_act = full_act.split(sep, 1)[0]
+        # print("ostatnia aktywnosc: ", last_act)
+        tmp = {
+            'project_id': project.attributes['id'],
+            'project_name': project.attributes['name_with_namespace'],
+            'project_group': project.attributes['namespace']['name'],
+            'project_status': project.attributes['visibility'],
+            'project_license': lic,
+            'project_last_activity': last_act
+        }
+        j_project['projects'][x] = {}
+        j_project['projects'][x] = tmp
+        j_project['projects'][x]['owners'] = {}
+        link = (project.attributes['_links']['members'] + '/all')
+        response = requests.get(link, headers=headers)
+        data = response.text
+        owners = json.loads(data)
+        for owner in owners:
+            if owner['access_level'] == 50:
+                # print('User ID: ', owner['id'])
+                # print('User Name: ', owner['name'])
+                # print('Access level: ', owner['access_level'])
+                y = owner['id']
+                j_project['projects'][x]['owners'][y] = {}
+                user = gl.users.get(y)
+                emails = user.emails.list()
+                if user.email == user.commit_email:
+                    user_tmp = {
+                        'owner_id': owner['id'],
+                        'owner_name': owner['name'],
+                        'owner_mail': user.email,
+                    }
+                else:
+                    user_tmp = {
+                        'owner_id': owner['id'],
+                        'owner_name': owner['name'],
+                        'owner_mail': user.email,
+                        'owner_mail_commit': user.commit_email
+                    }
+                j_project['projects'][x]['owners'][y] = user_tmp
+        # print(8*"-")
+except:
+    print('Cant connect to GitLab server, check credential')
+    exit()
+
+new_jproject = json.dumps(j_project, indent=4, ensure_ascii=False)
+
+# print(new_jproject)
+
+with open("gitlab-projects.json", "w", encoding='utf8') as outfile:
+    outfile.write(new_jproject)
+
+new_jproject_html = json2html.convert(json=new_jproject)
+
+with open("gitlab-projects.html", "w", encoding='utf8') as outfile:
+    outfile.write(new_jproject_html)
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2277aec4c490117eeb958eb1841708fd24b001d0
Binary files /dev/null and b/requirements.txt differ